索引生命周期
编辑索引生命周期
编辑ILM 定义了五个索引生命周期阶段
- 热 (Hot):索引正在被积极更新和查询。
- 温 (Warm):索引不再被更新,但仍在被查询。
- 冷 (Cold):索引不再被更新,并且查询频率较低。信息仍然需要可搜索,但如果这些查询速度较慢也是可以接受的。
- 冻结 (Frozen):索引不再被更新,并且很少被查询。信息仍然需要可搜索,但如果这些查询速度非常慢也是可以接受的。
- 删除 (Delete):索引不再需要,可以安全地移除。
索引的生命周期策略指定了哪些阶段适用,每个阶段执行哪些操作,以及阶段之间何时转换。
您可以在创建索引时手动应用生命周期策略。对于时间序列索引,您需要将生命周期策略与用于创建系列中新索引的索引模板相关联。当索引滚动更新时,手动应用的策略不会自动应用于新索引。
如果您使用 Elasticsearch 的安全功能,ILM 会以最后更新策略的用户身份执行操作。ILM 仅具有最后一次策略更新时分配给用户的角色。
阶段转换
编辑ILM 根据索引的使用时间在生命周期中移动索引。要控制这些转换的时间,您可以为每个阶段设置一个最小使用时间。为了使索引移动到下一阶段,当前阶段的所有操作必须完成,并且索引必须比下一阶段的最小使用时间更旧。配置的最小使用时间必须在后续阶段之间增加,例如,最小使用时间为 10 天的“温”阶段只能后跟最小使用时间未设置或 >= 10 天的“冷”阶段。
最小使用时间默认为零,这会导致 ILM 在当前阶段的所有操作完成后立即将索引移动到下一阶段。
如果索引有未分配的分片,并且集群健康状态为黄色,则索引仍然可以根据其索引生命周期管理策略转换到下一阶段。但是,由于 Elasticsearch 只能在绿色集群上执行某些清理任务,因此可能会产生意想不到的副作用。
为了避免磁盘使用量增加和可靠性问题,请及时解决任何集群健康问题。
阶段执行
编辑ILM 控制一个阶段中操作的执行顺序以及执行哪些步骤来执行每个操作所需的索引操作。
当索引进入一个阶段时,ILM 会将阶段定义缓存在索引元数据中。这确保了策略更新不会将索引置于永远无法退出该阶段的状态。如果可以安全地应用更改,ILM 会更新缓存的阶段定义。如果不能,阶段执行将继续使用缓存的定义。
ILM 定期运行,检查索引是否符合策略标准,并执行所需的任何步骤。为了避免竞争条件,ILM 可能需要多次运行才能执行完成操作所需的所有步骤。例如,如果 ILM 确定索引已满足滚动更新条件,它将开始执行完成滚动更新操作所需的步骤。如果它到达一个不安全进入下一步的点,则执行停止。下次 ILM 运行时,ILM 将从上次停止的地方继续执行。这意味着,即使 indices.lifecycle.poll_interval
设置为 10 分钟,并且索引满足滚动更新条件,也可能需要 20 分钟才能完成滚动更新。
阶段操作
编辑ILM 支持每个阶段中的以下操作。ILM 按照列出的顺序执行操作。