Elasticsearch 数据流生命周期设置详解
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
概述
在Elasticsearch中,数据流生命周期(Data Stream Lifecycle)是一种自动化管理数据流及其底层索引生命周期的机制。本文将深入解析Elasticsearch中与数据流生命周期相关的各项设置,帮助开发者更好地理解和配置这一重要功能。
集群级别设置
轮询间隔设置
data_streams.lifecycle.poll_interval
(动态设置,时间单位值):
- 定义Elasticsearch检查所有配置了内置生命周期的数据流下一步操作的频率
- 默认值为5分钟(5m)
- 这个设置决定了系统检查数据流状态的频率,较短的间隔能更快响应变化但会增加系统负载
默认滚动条件
cluster.lifecycle.default.rollover
(动态设置,字符串):
- 配置数据流在配置了生命周期后触发滚动(rollover)的条件
- 当前默认值为:
max_age=auto,max_primary_shard_size=50gb,min_docs=1,max_primary_shard_docs=200000000
- 触发条件包括(满足任一条件即可):
- 任一主分片大小达到50GB
- 任一主分片包含2亿个文档
- 索引达到基于数据流保留时间的特定年龄
- 并且至少包含一个文档
尾部合并策略设置
数据流生命周期通过尾部合并(tail merging)优化索引性能,相关设置包括:
-
data_streams.lifecycle.target.merge.policy.merge_factor
(动态设置,整数):- 控制目标索引的Lucene合并策略因子
- 定义应合并在一起的段数量以及每个层级预期的最大段数量
- 默认值16,可在目标索引的
index.merge.policy.merge_factor
设置中查看
-
data_streams.lifecycle.target.merge.policy.floor_segment
(动态设置):- 控制目标索引的Lucene合并策略最小段大小
- 防止索引存在大量非常小的段
- 默认值100MB
错误重试机制
data_streams.lifecycle.signalling.error_retry_interval
(动态设置,整数):
- 定义数据流生命周期在错误步骤中对索引执行的重试次数
- 当前通过错误级别日志记录信号机制
- 默认10次重试
索引级别设置
以下设置通常在数据流的后备索引上配置:
生命周期管理优先级
index.lifecycle.prefer_ilm
(动态设置,布尔值):
- 当后备索引同时配置了索引生命周期管理(ILM)策略和数据流内置生命周期时,决定由哪个功能管理索引
- 设置为true时由ILM管理,false时由数据流生命周期管理
- 默认值为true
原始日期设置
index.lifecycle.origination_date
(动态设置,长整型):
- 指定用于计算后备索引生成年龄的时间戳(Unix纪元毫秒值)
- 主要用途:
- 当创建包含旧数据的后备索引时
- 确保保留期和其他生命周期设置基于数据的原始时间戳而非索引时间
- 特别适用于数据迁移或历史数据导入场景
最佳实践建议
-
轮询间隔:在生产环境中,应根据集群负载和数据流数量调整轮询间隔。对于大型集群,适当增加间隔可减少系统开销。
-
滚动条件:默认的滚动条件适用于大多数场景,但对于特定用例(如日志分析或时序数据),可能需要调整这些阈值以获得最佳性能。
-
合并策略:尾部合并是优化查询性能的重要手段。对于写入量大的数据流,可以适当增加merge_factor值以减少合并操作频率。
-
错误处理:监控错误重试日志对于及时发现和处理生命周期管理中的问题至关重要。
-
管理优先级:在混合使用ILM和数据流生命周期的环境中,明确设置管理优先级可以避免冲突和意外行为。
通过合理配置这些设置,可以确保Elasticsearch数据流生命周期管理既高效又可靠,满足不同业务场景的需求。
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考