zoukankan      html  css  js  c++  java
  • ES索引生命周期管理一

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

    • Hot:索引可写入,也可查询。
    • Warm:索引不可写入,但可查询。
    • Cold:索引不可写入,但很少被查询,查询的慢点也可接受。
    • Delete:索引可被安全的删除。

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

    • Rollover 当写入索引达到了一定的大小,文档数量或创建时间时,Rollover可创建一个新的写入索引,将旧的写入索引的别名去掉,并把别名赋给新的写入索引。所以便可以通过切换别名控制写入的索引是谁。它可用于Hot阶段。
    • Shrink 减少一个索引的主分片数,可用于Warm阶段。需要注意的是当shink完成后索引名会由原来的<origin-index-name>变为shrink-<origin-index-name>.
    • Force merge 可触发一个索引分片的segment merge,同时释放掉被删除文档的占用空间。用于Warm阶段。
    • Allocate 可指定一个索引的副本数,用于warm, cold阶段。

    三步实现完成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

  • 相关阅读:
    String类的常用方法
    StringBuffer和String的区别
    docker安装kali
    6.找素数
    5.三羊献瑞
    4.迷宫大逃亡
    3.百米
    2.后台登录
    1.猴子吃桃
    深入理解Docker容器和镜像
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/14282311.html
Copyright © 2011-2022 走看看