首页/云/可观测性速查/ILM 索引生命周期管理
日志平台52 条

ILM 索引生命周期管理

生命周期策略把索引按时间划入 hot/warm/cold/delete 阶段:滚动、合并、冻结、删除自动执行,控制存储成本与查询性能。

可观测性速查云更新于 2026-10-13

ILM 是什么

ILM(索引生命周期管理)把索引按时间划入 hot、warm、cold、delete 等阶段:滚动到新索引、合并段、冻结、删除都由策略自动执行,用来同时控制存储成本与查询性能。日志类「每天一个索引」的场景几乎都靠它配合索引模板一起工作。

基本信息

阶段hot / warm / cold / frozen / delete
触发方式min_age(相对滚动时间)与各项条件
关键动作rollover、forcemerge、freeze、delete
接入方式索引模板里引用策略名
滚动前提需要写别名与 bootstrap 索引
作用范围只影响新索引,已有索引不追溯

典型使用场景

  • 日志索引按大小或天数自动滚动,避免单索引无限增长
  • 滚动后进入 warm 阶段做段合并,降低查询开销
  • 按合规要求保留固定天数后自动删除,控制存储成本
  • 冷数据迁到低配节点或冻结,降低资源占用
  • 用生命周期替代人工清理脚本,减少运维失误
  • 配合快照策略,在 delete 前完成备份

策略与接入

策略与接入
PUT _ilm/policy/logs-policy
{
  "policy": {
    "phases": {
      "hot":    { "actions": { "rollover": { "max_primary_shard_size": "50gb", "max_age": "1d" } } },
      "warm":   { "min_age": "7d",  "actions": { "forcemerge": { "max_num_segments": 1 } } },
      "delete": { "min_age": "90d", "actions": { "delete": {} } }
    }
  }
}

# 新索引通过模板引用策略,rollover 需写别名指向新索引

阶段与常用动作

阶段常用动作目的
hotrollover写入滚动到新索引
warmforcemerge / shrink降低段数、提升查询效率
coldallocate / freeze迁移到低成本节点
deletedelete按保留期清理数据
rollover 需要 bootstrap 索引与写别名:客户端只写别名,ILM 负责把写入滚动到新的后备索引,缺了别名滚动就不会发生。
delete 阶段是不可逆操作:策略调整前先在测试环境验证 min_age 与条件,避免误删仍需保留的数据。
策略停留在 hot 阶段是常见故障:检查别名指向、滚动条件阈值,以及索引是否真的挂上了策略。
min_age 是相对滚动时间而非创建时间计算,理解这一点才能正确推算各阶段的进入时机。
策略解释接口能展示某个索引当前处于哪个阶段、下一步何时执行,排查「策略不生效」时先看它。
冷热分层需要配合节点角色与分配规则使用,只写阶段名不会自动把数据搬到低成本节点。

易错点

  • 滚动条件没触发时策略会停在 hot 阶段,检查别名是否写对与分片大小阈值
  • delete 阶段前必须测试:策略调错可能带来不可逆的数据删除
  • 没有写别名时 rollover 不会执行,索引会一直增长而不滚动
  • min_age 按滚动时间起算而非创建时间,按创建时间推算阶段会得到错误结论
  • 策略只影响新建索引,已有索引需要单独附加策略,否则不会被管理
  • 滚动后新索引若没有继承策略,后续阶段不会执行,表现为数据一直不删除也不合并

数据来源与参考

  • Elastic 官方文档 · Index lifecycle management
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌