日志-06Elasticsearch索引生命周期

阅读量: zyh 2019-12-16 14:00:10
Categories: > Tags:

引用

https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index-lifecycle-management.html

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-ilm

涉及的概念

  1. 索引生命周期
  2. 索引模板
  3. 索引别名

索引生命周期

phases.hot.min_age 设置索引进入hot阶段所需的时间。
phases.hot.actions.set_priority.priority 设置hot阶段索引的优先级。
phases.warm.min_age 设置索引进入warm阶段所需的时间。
phases.warm.actions.allocate.number_of_replicas 设置warm阶段索引的副本数。
phases.warm.actions.allocate.require.box_type 设置warm阶段索引分片分配的策略。例如将分片分配到warm节点。
phases.warm.actions.set_priority.priority 设置warm阶段索引的优先级。
phases.cold.min_age 设置索引进入cold阶段所需的时间。
phases.cold.actions.set_priority.priority 设置cold阶段索引的优先级。
PUT /_ilm/policy/<索引生命周期名>
{
    "policy": {
        "phases": {
            "hot": {
                "actions": {
                    "rollover": {
                        "max_age": "1d",
                        "max_size": "1gb",
                        "max_docs": 10000
                    },
                    "set_priority": {
                        "priority": 100
                    }
                }
            },
            "warm": {
                "min_age": "7d",
                "actions": {
                    "allocate": {
                      "require": {
                        "box_type": "warm"
                    },
                    "forcemerge": {
                        "max_num_segments": 1
                    },
                    "shrink": {
                        "number_of_shards": 1
                    },
                    "set_priority": {
                        "priority": 50
                    }
                }
            },
            "cold": {
                "min_age": "30d",
                "actions": {
                    "allocate": {
                      "require": {
                        "box_type": "cold"
                      }
                    },
                    "set_priority": {
                        "priority": 0
                    }
                }
            },
            "delete": {
                "min_age": "90d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}

上面 json 的配置意思如下:

假设初始索引是-000001,它当前位于 hot 阶段。(所有索引初始的时候都是 hot 阶段,因为phases.hot.min_age默认是0)

hot 阶段下,-000001满足下列任一条件,滚动生成新索引-000002


滚动更新后,当-000001

索引模板

index_patterns 匹配索引名的正则,凡是满足这个值的索引都会附加索引模板定义的属性
number_of_shards 分片数
index.lifecycle.name 生命周期名
index.lifecycle.rollover_alias 生命周期滚动更新的时候,需要的索引别名
PUT _template/<索引模板名>
{
  "index_patterns": ["app-prod-*"],
  "settings": {
    "number_of_shards": 1,
    "index.lifecycle.name": "app-prod", 
    "index.lifecycle.rollover_alias": "app-prod"
  }
}

索引别名

生命周期滚动更新必须的东西。

因为要支持生命周期滚动更新,则索引初始名必须是xxx-000001

PUT /<索引名>/_alias/<索引别名>

logstash

    output {
      elasticsearch {
        ilm_rollover_alias => "app-prod"
        ilm_pattern => "{now/d}-00001"
        ilm_policy => "app-prod"
      }
    }