Elasticsearch 中的索引生命周期管理 (ILM)
索引生命周期管理 (ILM) 可自动管理基于时间的索引(例如日志和指标)。通过使用 ILM 策略,您可以简化索引滚动、保留和删除流程,从而优化数据的性能、可靠性和存储成本。
例如,您可以使用 ILM 来:
- 当索引达到一定大小或文档数量时,启动一个新索引
- 每天、每周或每月创建一个新索引,并归档以前的索引
- 删除旧索引以执行数据保留标准
要使用 ILM,集群中的所有节点必须运行相同的版本。尽管在混合版本集群中创建和应用策略可能是可行的,但无法保证它们能按预期工作。尝试使用在集群的所有节点上不受支持的操作的策略会导致错误。
请注意 ILM 的可用性,以确保它适用于您的用例。
您可以使用 ILM 来管理索引和数据流
索引: 您可以使用 ILM 来管理特定索引或一组索引,通过定义生命周期策略并将其应用于索引或索引别名。然后,每个索引都会根据其策略进行评估,并根据预定义的条件经历各个阶段(
hot(热)、warm(温)、cold(冷)、frozen(冻结)、delete(删除))。这种方法可以对每个索引进行更细粒度的控制,但与使用我们推荐的数据流相比,需要付出相当多的努力。数据流: 数据流充当包含仅追加、时间序列数据的索引集的抽象层。您可以将数据流配置为单个命名资源来配置 ILM,以便自动对数据流的后端索引执行滚动和其他配置的操作。
ILM 适用于版本化 Elastic Stack 上的所有部署类型,但不适用于 Elasticsearch Serverless。在 Serverless 环境中,数据流生命周期可用作数据生命周期选项。
Serverless 环境中更简单的生命周期管理ILM 让您可以根据性能需求和保留要求自动将索引迁移到不同的数据层。这使您能够在硬件成本和性能之间取得平衡。ILM 在 Serverless 中不可用,因为在该环境中,您的集群性能已为您优化。相反,数据流生命周期可用作数据管理选项。
数据流生命周期是一种更简单的生命周期管理工具,针对最常见的生命周期管理需求进行了优化。它使您能够配置数据的保留期限并优化数据的存储方式,而无需涉及数据层等以硬件为中心的概念。有关 ILM 和数据流生命周期的详细比较,请参阅 数据生命周期。
ILM 策略可以触发如下操作:
- 滚动 (Rollover):当当前索引达到一定大小、文档数量或存活时间时,创建一个新的写入索引。
- 收缩 (Shrink):减少索引中的主分片数量。
- 强制合并 (Force merge):触发强制合并以减少索引分片中的段数量。
- 删除 (Delete):永久移除索引,包括其所有数据和元数据。
- 以及更多
每个操作都有选项,您可以用来指定索引的行为和特征,例如:
- 您希望滚动到新索引时的最大分片大小、文档数量或存活时间。
- 索引不再被更新且可以减少主分片数量的时间点。
- 何时强制合并以永久删除标记为删除的文档。
- 索引可以移动到性能较低的硬件上的时间点。
- 可用性不再那么关键且可以减少副本数量的时间点。
- 何时可以安全地删除索引。
例如,如果您正在将来自一组 ATM 机的指标数据索引到 Elasticsearch 中,您可以定义一个如下的策略:
- 当索引的主分片总大小达到 50GB 时,滚动到新索引。
- 将旧索引移动到温阶段,标记为只读,并将其收缩为单个分片。
- 7 天后,将索引移动到冷阶段并将其移动到更便宜的硬件上。
- 一旦达到 30 天的保留期要求,即删除索引。
在索引生命周期操作中了解所有可用操作。
您可以通过 Kibana 的索引管理 UI 或 ILM API 创建和管理索引生命周期策略。有关创建和管理索引生命周期策略的更多详细信息,请参阅:
- 创建索引生命周期管理策略
- 检查 Elasticsearch 索引和数据流的 ILM 状态
- 更新或切换 Elasticsearch 索引生命周期策略
- 恢复托管索引并管理 ILM 操作
- 自定义 Elasticsearch 中的内置 ILM 策略
当您安装 Elastic 集成,或使用 Elastic Agent、Beats 或 Logstash Elasticsearch 输出插件将数据发送到 Elastic Stack 时,会自动创建默认的索引生命周期管理策略。

要自动备份您的索引并管理快照,请使用快照生命周期策略。
如果您想在执行维护、对集群进行其他更改或进行任何故障排查时暂时暂停 ILM 服务,请参阅启动和停止索引生命周期管理。
如果在运行 ILM 时出现任何问题,请参阅修复索引生命周期管理错误以获取详细的故障排查指南。
对于当前正在使用索引维护(index curation)的现有热-温部署,迁移到 ILM 可为您提供对每个索引生命周期的更细粒度控制。阅读更多内容:
- 迁移到自托管和 Elastic Cloud on Kubernetes 部署上的 ILM
- 迁移到 Elastic Cloud Hosted 或 Elastic Cloud Enterprise 部署上的索引生命周期管理 (ILM)
- 将索引分配过滤器迁移到 ILM 节点角色
您还可以设置 ILM 来管理尚未具有托管生命周期的一组现有索引。您应用的 ILM 策略不应包含滚动操作,因为当滚动操作创建新索引时,该策略不会被延续。有关更多信息,请参阅将索引生命周期策略应用于现有的 Elasticsearch 索引。