ES系列-- ILM索引生命周期管理

前言

官方文档地址7.8版本

正文

ILM定义了四个生命周期阶段:
Hot:正在积极地更新和查询索引。
Warm:不再更新索引,但仍在查询。
cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。
Delete:不再需要该索引,可以安全地将其删除。

ILM定期运行(indices.lifecycle.poll_interval),默认是10分钟,检查索引是否符合策略标准,并执行所需的任何步骤。
为了避免争用情况,ILM可能需要运行多次以执行完成一项动作所需的所有步骤。所以,即使indices.lifecycle.poll_interval设置为10分钟并且索引符合rollover,也可能需要20分钟才能完成rollover。
举例:比如我们设定超过10篇文档就rollover,但是因为这个过程不是立即实现的,可能第11,12篇还在落在之前的索引上,直到rollover成功后,新建的文档才会落在新的索引上。

注意:

为确保策略更新不会将索引置于无法退出当前阶段的状态,进入阶段时,阶段定义会缓存在索引元数据中。此缓存的定义用于完成该阶段。
当索引前进到下一阶段时,它将使用更新策略中的阶段定义。

ilm默认是启动的,状态为running,可以使用下面的api操作一下。

# 查看状态
GET _ilm/status
# 启动
POST _ilm/start
# 停止
POST _ilm/stop

rollover

这个是比较常用的,单独拿出来。
rollover可以基于大小,文档数或使用期限创建新的索引去保存数据。

操作体验下:

1.创建一条策略
# 创建一条策略(这里设置超过3条数据就rollover)
PUT _ilm/policy/test-policy
{
   
  "policy": {
   
    "phases": {
   
      "hot": {
   
        "actions": {
   
          "rollover": {
   
            "max_docs": 3
          },
          "set_priority": {
   
            "priority": 100
          }
        }
      },
      "delete": {
   
        "min_age": "220d",
        "actions": {
   
          "delete": {
   }
        }
      }
    }
  }
}

# 顺带列一下其它的api,如下:
# 查询
GET _ilm/policy

GET _ilm/policy/>

# 删除策略
DELETE _ilm/policy/>

# 从index中移除策略
POST >/_ilm/remove
# 查看索引当前所在生命周期状态
GET >/_ilm/explain
# 重试,一般通过explain查看策略状态,如果是error,则按照错误信息更新策略,然后可以执行retry进行重试
POST >/_ilm/retry
2. 创建index template应用策略:
# 创建index模板
PUT _index_template/test-template
{
   
  "index_patterns": ["test-*"],
  "template":{
   
     "settings": {
   
      "number_of_shards": 1,
      "number_of_replicas": 0,
      "index.lifecycle.name": "test-policy",    
      "index.lifecycle.rollover_alias": "test-index"  

你可能感兴趣的:(ELK)