elasticsearch生命周期管理

一、参考

使用索引生命周期管理实现热温冷架构

官方文档

Elasticsearch 集群从 3 节点扩容到温热架构的搭建攻略

二、概览

2.1 目标

(1) 当索引达到约定大小、索引文档数量达到约定数量,自动创建新的索引

(2) 安装指定周期(1 天,1 周,1 个月)创建索引,将之前的索引存档

(3) 强制删除过期的索引,以达到保留一定日期范围的数据

2.2 生命周期策略

一个生命周期策略定义了:

(1) 适用于哪些阶段

(2) 每个适用阶段中有哪些行为

(3) 什么时候,由当前阶段进入下一个阶段

三、生命周期的四个阶段

3.1 热数据阶段

定义: 索引正在频繁写入和查询

行为: Set Priority, Unfollow, Force Merge, Rollover

3.2 温数据阶段

定义: 索引只能查询,无法写入

行为: Set Priority, Unfollow, Read-Only, Allocate, Shrink, Force Merge

3.3 冷数据阶段

定义: 索引相对较少查询,无法写入

行为: Set Priority, Unfollow, Allocate, Freeze, Searchable Snapshot

3.4 删除阶段

定义: 索引可以被彻底删除

行为: Wait For Snapshot, Delete

3.5 阶段何时转移

由阶段 A 进入阶段 B,需要:

(1) 阶段 A 中所有行为完成

(2) 索引的 age 必须大于阶段 B 中定义的最小时间

示例:

四、生命周期策略

4.1 创建策略

# 创建策略
PUT _ilm/policy/yztest_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "10s",
            "max_docs": 3
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
# 创建索引模版,应用上面的策略
PUT _template/yztest_template
{
  "index_patterns": [
    "yztest-*"
  ],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "index.lifecycle.name": "yztest_policy",
    "index.lifecycle.rollover_alias": "yztest"
  }
}

# 创建索引
PUT yztest-000001
{
  "aliases": {
    "yztest": {
      "is_write_index": true
    }
  }
}


4.1 策略的缓存

当一个索引进入一个新的阶段,将会首先缓存新的阶段的定义到索引 metadata 中

4.2 策略的更新

五、actions 列表

5.1 rollover 滚动

5.2 shrink 分片缩小

5.3 force merge 分片中分段合并

5.4 freeze 冻结分片,只读

5.5 delete 删除分片

六、ilm api 列表

6.1 更新策略检查间隔

# 将时间间隔更新为10s,默认是10m
PUT _cluster/settings
{
  "persistent": {
    "indices.lifecycle.poll_interval": "10s"
  }
}

七、注意和问题

7.1 如何保证生命周期策略适用于所有索引(包含以后会生成的索引)?

一般做法是, 先创建一个生命周期策略、一个索引模版,将生命周期策略应用于索引模版上,所有符合模版的索引都会使用相同的生命周期策略

如果只是对于当前索引(按照时间滚动),指定一个生命周期策略,则滚动后创建的新索引不会使用之前的生命周期策略

7.2 集群状态为 yellow 时候,生命周期策略会有影响吗?

即使集群状态是 yellow, 具体索引仍然会按照生命周期策略中定义,正常进行阶段转移,

但是,因为集群非 green 状态,会有一些清理任务无法完成,所以可能会产生负作用

原文地址:https://www.cnblogs.com/thewindyz/p/14169313.html