美文网首页Elasticsearch 7.x 小白到高手
elasticsearch 7.0 新特性之 索引生命周期管理(

elasticsearch 7.0 新特性之 索引生命周期管理(

作者: 郭彦超 | 来源:发表于2019-04-19 15:32 被阅读180次

    索引生命周期管理(ILM)是es新引入的一系列对索引管理的操作,其中会涉及到很多之前没有遇到过的概念,为了把这些操作搞明白,会尽量结合一些例子来说明

    1、介绍

    引入索引生命周期管理的一个最重要的目的就是对大量时序数据在es读写操作的性能优化,比如易企秀通过spark streaming读取Kafka中的日志实时写入es,这些日志高峰期每天10亿+,每分钟接近100w,在这么大数据量上进行操作是一件很麻烦的事,那么我们希望es能够对单分片超过50g或者30天前的索引进行归档,并能够自动删除90天前的索引,那么这个场景可以通过ILM进行策略配置来实现。

    2、操作

    • 定义策略
      上面的需求对应的策略语句大致如下:
    curl -X PUT "localhost:9200/_ilm/policy/datastream_policy" -H 'Content-Type: application/json' -d'
    {
      "policy": {                       
        "phases": {
          "hot": {                      
            "actions": {
              "rollover": {             
                "max_size": "50GB",
                "max_age": "30d"
              }
            }
          },
          "delete": {
            "min_age": "90d",           
            "actions": {
              "delete": {}              
            }
          }
        }
      }
    }
    '
    
    

    其中rollover中配置归档策略,目前支持3中策略,分别是max_docs、max_size、max_age(请关注、具体后续内容介绍),其中的任何一个条件满足时都会触发索引的归档操作,并删除归档90天后的索引文件(其中delete属于phrase,这个也会在后面内容介绍)。

    • 使用策略
      在索引库上使用策略的方式有很多种,但我们的需求是对满足所有rollover条件的规则统统适用,所以需要配置一个索引模板,并指定对应的规则:
    curl -X PUT "localhost:9200/_template/datastream_template" -H 'Content-Type: application/json' -d'
    {
      "index_patterns": ["datastream-*"],                 
      "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "index.lifecycle.name": "datastream_policy",      
        "index.lifecycle.rollover_alias": "datastream"    
      }
    }
    '
    
    

    其中 index.lifecycle.name 指定我们索引模板使用哪个策略进行管理,index.lifecycle.rollover_alias 配置该系列索引的别名,通过别名datastream可对datastream-*进行读写操作。
    在开始之前,还需要最后一步重要的操作,那就是激活你的策略,创建一个以000001结尾的索引,之后回滚的索引会在这个数字上递增;由于别名操作索引时,同一时刻只能有一个索引被写,所以还需要设置 is_write_index = true 。

    curl -X PUT "localhost:9200/datastream-000001" -H 'Content-Type: application/json' -d'
    {
      "aliases": {
        "datastream": {
          "is_write_index": true
        }
      }
    }
    '
    
    
    • 查看策略
      通过下面的api用户可以查看当前索创建使用的策略已经引处于什么阶段:
    GET datastream-*/_ilm/explain
    

    相关文章

      网友评论

        本文标题:elasticsearch 7.0 新特性之 索引生命周期管理(

        本文链接:https://www.haomeiwen.com/subject/mymfgqtx.html