elasticsearch-索引生命周期管理

elasticsearch-索引生命周期管理

索引生命周期分为4个阶段:hot、warm、cold、delete

其中hot阶段主要负责对索引进行滚动更新操作,warm、cold、delete阶段主要负责进一步处理滚动更新后的数据

阶段 介绍
hot 热数据阶段,主要处理时序数据的实时写入。可根据索引的文档数、大小、时长决定是否调用rollover API来滚动更新索引
warm 冷数据阶段,索引不再写入,主要用来提供查询
cold 冷数据阶段,索引不再更新,查询很少,查询速度会变慢
delete 删除数据阶段,索引将被删除
添加生命周期管理方式
  • 通过索引模板添加生命周期管理策略

    将策略应用到整个别名覆盖的索引下

  • 为单个索引添加生命周期管理策略

    只能覆盖当前索引,新滚动的索引不再受策略影响

生命周期操作

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

配置索引生命周期

  • 第一步:配置lifecycle检测时间;
  • 第二步:创建一个索引策略;
  • 第三步:创建一个索引模版,指定使用的索引策略;
  • 第四步:创建一个符合上述索引模版的索引;
  • 第五步:向索引中写入数据,使索引触发滚动更新策略;
  • 第六步:查看索引所处阶段

1.配置lifecycle检测时间

PUT /_cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "1s" 
  }
}

2.创建一个索引策略

PUT /_ilm/policy/lfc_test
{
  "policy": {
    //阶段设置
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_docs": "5"
          }
        }
      },
      "warm": {
        "min_age": "10s",
        "actions": {
          "allocate": {
            "number_of_replicas": 0
          }
        }
      },
      "delete": {
        "min_age": "20s",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

3.创建一个索引模版,指定使用的索引策略

PUT _template/leefs_ilm_template
{
  "index_patterns": ["lfc-log-*"],                 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "lfc_test", 
    "index.lifecycle.rollover_alias": "lfc-log"
  }
}

4.创建索引模版的索引

DELETE lfc-log*

PUT lfc-log-000001
{
  "aliases": {
    "lfc-log": {
      "is_write_index":true
    }
  }
}


POST lfc-log/_doc?refresh
{
  "name":"test-log"
}

GET /lfc-log/_search

查看索引

GET _alias/lfc-log
{
  "lfc-log-000004": {
    "aliases": {
      "lfc-log": {
        "is_write_index": false
      }
    }
  },
  "lfc-log-000005": {
    "aliases": {
      "lfc-log": {
        "is_write_index": true
      }
    }
  }
}

查看索引生命周期

GET lfc-log-*/_ilm/explain

生命周期状态管理

查看生命周期状态

GET  _ilm/status
{
  "operation_mode": "RUNNING"
}

生命周期停止

POST  _ilm/stop
{
  "operation_mode": "STOPPED"
}

启动生命周期

POST  _ilm/start
{
  "operation_mode": "RUNNING"
}

你可能感兴趣的:(elasticsearch,elasticsearch)