es ilm计算索引存在时间

索引存在时间(lifecycle_date)的基准取决于是否配置了 rollover :若未使用 rollover,则从索引创建时间开始计算;若使用了 rollover,则从 rollover 时间开始计算。各阶段的 min_age 均相对于该基准时间累加。

📌 核心计算规则

  • 未使用 rollovermin_age索引的创建时间开始计算。
  • 使用了 rollovermin_age索引发生 rollover 的时间开始计算(因为 rollover 后会生成新索引,新索引的创建时间即为计算基准)。
  • 阶段过渡条件:在进入下一阶段前,当前阶段的所有 action 必须执行完成。
  • min_age 递增 :各阶段的 min_age 必须逐级递增。

📐 计算示例

假设策略配置为:hot 阶段 30 天 rollover,warm 阶段 min_age: 7d,delete 阶段 min_age: 365d

  • 未使用 rollover:索引创建后 365 天被删除。
  • 使用 rollover :索引 rollover 后 365 天被删除。若索引在创建后第 30 天 rollover,则实际存在时间最长可达 30 + 365 = 395 天

🔧 特殊配置:自定义时间基准

若索引包含历史数据,可通过以下设置覆盖默认计算基准:

  • index.lifecycle.origination_date:指定 Unix 时间戳作为计算索引年龄的起始时间。
  • index.lifecycle.parse_origination_date :设为 true 时,ES 会从索引名中解析日期(需匹配 yyyy.MM.dd 格式,如 logs-2016.10.31-000002)作为起始时间。

🔍 查看与调试

  • 查看索引年龄与阶段GET /<index>/_ilm/explain,关注 lifecycle_dateagephase 等字段。
  • 调整轮询频率 :ILM 默认每 10 分钟 检查一次索引是否满足阶段转换条件,可通过 indices.lifecycle.poll_interval 调整。

IML示例

复制代码
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_age": "10d",
            "max_size": "25gb"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "warm": {
        "min_age": "10d",
        "actions": {
          "set_priority": {
            "priority": 20
          },
          "shrink": {
            "number_of_shards": 1
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

针对这个新策略,我们套用之前推导出的通用公式:

物理最大保存天数 = 实际触发滚动的天数 + MAX(warm.min_age, delete.min_age)

代入数值:

  • 实际触发滚动的天数:由 max_age: 10dmax_size: 25gb 决定,取先达到者。最坏情况(25GB 一直没写满)下,滚动发生在 第 10 天

  • MAX(warm.min_age, delete.min_age) = MAX(10d, 30d) = 30 天

结论:索引最大物理存活天数为 10 + 30 = 40 天。


时间线拆解(最坏情况:25GB 一直未写满)

天数 事件 说明
第 0 天 索引创建,开始写入 -
第 10 天 达到 max_age: 10d发生滚动 旧索引 lifecycle_date 重置为第 10 天,Warm 和 Delete 的倒计时同时开始
第 20 天 达到 warm.min_age: 10d(从第 10 天算起) 索引进入 Warm 阶段,执行 shrink(收缩为 1 个分片)
第 40 天 达到 delete.min_age: 30d(从第 10 天算起) 索引进入 Delete 阶段,立即物理删除

如果提前写满 25GB,会怎样?

如果索引在 第 5 天 就写满了 25GB,那么滚动会提前在第 5 天发生。此时:

  • 物理存活天数 = 5 天(滚动)+ 30 天(删除缓冲)= 35 天

所以,40 天是"最大"值,实际可能因写满磁盘而缩短。

相关推荐
菠萝猫yena1 小时前
【git】git 命令常用组合
大数据·git·elasticsearch
Leo.yuan3 小时前
AI辅助数据分析:如何让分析效率提升85%?
大数据·人工智能
Sayai4 小时前
Elasticsearch 压测利器 esrally 从安装到跑分全流程
大数据·elasticsearch·搜索引擎
科技发布5 小时前
传播易整合商圈媒体,商场停车场灯箱广告高效落地
大数据·人工智能·媒体
Zach_菠萝侠5 小时前
【DeepSeek Harness 研究】进化方向3:插件生态治理 思考、设计与实现
elasticsearch·deepseek
MindUp5 小时前
大模型在命理排盘场景下的多平台功能对比与工程化思考
大数据·人工智能
小刘快学习6 小时前
印刷包装企业的工艺问答与报价,为什么从直连模型改成了聚合网关
大数据·人工智能
大模型探索者6 小时前
2026零售与电子商务大模型训推平台选型指南:大促高并发与极致算力降本破局
大数据·人工智能·零售
WA内核拾荒者6 小时前
WhatsApp账号运营SOP的可视化编排与流水线监控
大数据·数据库·windows
楷哥爱开发6 小时前
目标国家 IP 会影响 TikTok、Instagram 的内容分发和受众地区吗?
大数据·运维·tcp/ip