其他分享
首页 > 其他分享> > ES索引生命周期管理

ES索引生命周期管理

作者:互联网

ES从6.7版本推出了索引生命周期管理(Index Lifecycle Management ,简称ILM)机制,能帮我们自动管理一个索引策略(Policy)下索引集群的生命周期。索引策略将一个索引的生命周期定义为四个阶段

索引策略控制这一个索引的生命从Hot -> Warm -> Cold -> Delete 阶段,每个阶段都可以配置不同的转化行为(Action)。下面我们看下几个常用的Action:

三步实现完成es生命周期管理

配置策略(policy)、索引模版(template)、索引(index)

1、配置策略

PUT _ilm/policy/ehr_prod_log_policy
{
  "policy": {
    "phases": {
      "hot": {                     
        "actions": {
          "rollover": {
            "max_size": "30gb"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

两个阶段,hot和delete;

索引超过30G,则执滚动;

delete阶段,超过30天执行删除动作。

2、索引模版(template)

PUT _template/ehr_prod_log_template
{
  "index_patterns": ["ehr-prod-log-rollover-*"],                 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "ehr_prod_log_policy",      
    "index.lifecycle.rollover_alias": "ehr-prod-log-rollover"    
  }
}

kafka中topic名称ehr-prod-log,这里对应定义别名“ehr-prod-log-rollover”,logstash配置会用到。

3、索引(index)

PUT ehr-prod-log-rollover-00000001
{
  "aliases": {
    "ehr-prod-log-rollover": {
      "is_write_index": true
    }
  }
}

4、Logstash使用ILM

output {
  elasticsearch {
    hosts => ["**"]
    ilm_rollover_alias => "ehr-prod-log-rollover" //将会附在ilm_rollover_alias的值后面共同构成索引名,myindex-00001 
ilm_pattern => "00001" //使用的索引策略
ilm_policy => "ehr_prod_log_policy" //使用的索引模版名称
template_name => "ehr_prod_log_template"
} }

实战中,通过logstash将日志从kafka采集到es,index => "ehr-prod-log-rollover",这里使用别名,与之对应。

则在es中对应生成对应索引,ehr-prod-log-rollover-0000000n,而对外使用别名即可。

5,验证

POST ehr-prod-log-rollover-00000001/_doc
{
    "message":"hello world"
}

用以下命令查看索引rollover进度。

GET ehr-prod-log-rollover-*/_ilm/explain

参考:https://elasticstack.blog.csdn.net/article/details/110816948

标签:生命周期,ehr,log,policy,索引,rollover,prod,ES
来源: https://www.cnblogs.com/fat-girl-spring/p/14282311.html