Elasticsearch索引生命周期管理(ILM)配置详解
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
什么是索引生命周期管理
索引生命周期管理(Index Lifecycle Management, ILM)是Elasticsearch提供的一项强大功能,它允许用户自动化管理索引的生命周期。通过定义策略,用户可以自动执行诸如滚动更新(rollover)、收缩(shrink)、冻结(freeze)和删除(delete)等操作,而无需手动干预。
集群级别配置
基础启用配置
xpack.ilm.enabled
参数在7.8.0版本后已被废弃,因为基础许可证功能现在总是启用的。这个参数将在Elasticsearch 8.0中完全移除。
历史记录配置
indices.lifecycle.history_index_enabled
参数控制是否启用ILM历史记录索引。当启用时(默认为true),ILM会将执行的所有操作记录到ilm-history-*
索引中,这对于审计和故障排查非常有用。
轮询间隔配置
indices.lifecycle.poll_interval
参数决定了ILM检查索引是否符合策略条件的频率。默认值为10分钟(10m)。这个值可以根据集群规模和性能需求进行调整,较短的间隔可以更快响应策略变更,但会增加集群负载。
滚动条件配置
indices.lifecycle.rollover.only_if_has_documents
参数(默认为true)确保ILM只会在索引包含至少一个文档时才执行滚动操作。这可以防止创建大量空索引的情况。
索引级别配置
索引完成标记
index.lifecycle.indexing_complete
参数标记索引是否已完成滚动。当ILM完成滚动操作后会自动设置为true。用户也可以显式设置此参数来跳过滚动操作。
策略名称配置
index.lifecycle.name
参数指定用于管理该索引的策略名称。在从快照恢复索引时,可以将此参数设置为null以禁用对该索引的进一步管理。
原始日期配置
index.lifecycle.origination_date
参数允许指定一个时间戳(Unix纪元毫秒值)来计算索引年龄。这在创建包含旧数据的新索引时特别有用,可以使用原始创建日期而非当前日期来计算索引年龄。
index.lifecycle.parse_origination_date
参数(默认为false)如果设置为true,则会尝试从索引名称中解析原始日期。索引名称必须符合特定模式,如logs-2016.10.31-000002
。
收缩操作等待阈值
index.lifecycle.step.wait_time_threshold
参数定义了在收缩操作期间等待集群解决分配问题的最长时间。默认值为12小时(12h),最小值为1小时(1h)。这在处理大型索引收缩时特别重要。
滚动别名配置
index.lifecycle.rollover_alias
参数指定在索引滚动时要更新的别名。当使用包含滚动操作的策略时必须指定此参数。在恢复快照时,可以将其设置为null以禁用对未来索引的管理。
最佳实践建议
-
对于生产环境,建议保持历史记录索引启用,以便于问题排查和审计。
-
轮询间隔应根据集群负载进行调整,高负载集群可以考虑增加间隔时间。
-
使用原始日期功能时,确保时间格式正确,特别是在从索引名称解析日期时。
-
在实施收缩操作前,评估集群状态和索引大小,适当调整等待阈值。
-
为滚动操作明确指定别名,确保索引滚动后写入操作能正确路由到新索引。
通过合理配置这些参数,可以构建一个高效、自动化的索引管理系统,显著减少运维工作量并优化集群性能。
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考