配置项作用 #
index_lifecycle_management.job_interval 配置项用于控制索引生命周期管理(ILM)调度器检查并执行生命周期任务的频率。
ILM 是 Easysearch 中用于自动管理索引生命周期的功能,可以自动执行索引的滚动(rollover)、收缩(shrink)、删除(delete)等操作。
配置项属性 #
- 配置路径:
index_lifecycle_management.job_interval - 数据类型:
TimeValue(时间值) - 默认值:
5m(5分钟) - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(支持动态更新)
配置项详解 #
工作机制 #
ILM 任务调度流程
调度器启动
│
↓
等待 job_interval(5分钟)
│
↓
扫描所有托管索引
│
↓
检查每个索引的生命周期阶段
│
├──────── Hot 阶段
│ ↓
│ 检查 rollover 条件
│ │
│ ├─── 条件满足 ──→ 执行 rollover
│ │
│ └─── 条件不满足 ──→ 继续
│
├──────── Warm 阶段
│ ↓
│ 执行收缩、降级操作
│
├──────── Cold 阶段
│ ↓
│ 执行冻结、归档操作
│
└──────── Delete 阶段
↓
执行删除操作
生命周期阶段转换 #
热-温-冷架构的自动转换
时间推移 ──────────────────────────────→
Hot (热数据)
│ age < 7d, size < 50GB
│
↓ job_interval 检查
│
↓ 条件满足
│
Warm (温数据)
│ age >= 7d
│
↓ job_interval 检查
│
↓ 条件满足
│
Cold (冷数据)
│ age >= 30d
│
↓ job_interval 检查
│
↓ 条件满足
│
Delete (删除)
│ age >= 365d
│
↓
索引被删除
与 sweep_period 的区别 #
两个配置的区别
job_interval(作业执行间隔):
- 作用: 控制策略执行的检查频率
- 对象: 每个托管索引的策略条件
- 目的: 检查并执行生命周期转换
- 默认: 5 分钟
sweep_period(协调器清理周期):
- 作用: 控制协调器的清理操作
- 对象: 托管索引的整体状态
- 目的: 检测异常、重建作业、状态同步
- 默认: 5 分钟(旧版 10 分钟)
配置建议 #
生产环境(默认) #
index_lifecycle_management:
job_interval: 5m # 默认值
建议: 保持默认值 5m。适用于大多数生产环境。
高频操作场景 #
index_lifecycle_management:
job_interval: 1m # 1 分钟
建议: 减少到 1-3m。当需要更快速响应策略变化时使用。
低负载要求 #
index_lifecycle_management:
job_interval: 15m # 15 分钟
建议: 增加到 10-15m。当希望减少调度开销时使用。
大规模集群 #
index_lifecycle_management:
job_interval: 10m # 10 分钟
coordinator:
sweep_period: 30m
建议: 托管索引很多时增加间隔。
代码示例 #
easysearch.yml 基础配置 #
index_lifecycle_management:
job_interval: 5m
完整 ILM 配置 #
index_lifecycle_management:
job_interval: 5m
coordinator:
sweep_period: 5m
快速响应配置 #
index_lifecycle_management:
job_interval: 1m
coordinator:
sweep_period: 2m
动态更新配置 #
PUT /_cluster/settings
{
"transient": {
"index_lifecycle_management.job_interval": "10m"
}
}
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
index_lifecycle_management.job_interval | 作业执行间隔 | 5m |
index_lifecycle_management.coordinator.sweep_period | 协调器清理周期 | 5m |
ILM 策略示例 #
典型的日志管理策略
Hot 阶段 (热数据):
- 条件: 索引大小 > 50GB 或 age > 1d
- 操作: rollover 到新索引
- 持续时间: 约 1 天
Warm 阶段 (温数据):
- 条件: age > 7d
- 操作: 设置为只读、force_merge
- 持续时间: 约 23 天
Cold 阶段 (冷数据):
- 条件: age > 30d
- 操作: 冻结索引、移动到冷存储
- 持续时间: 约 335 天
Delete 阶段 (删除):
- 条件: age > 365d
- 操作: 删除索引
- 持续时间: 永久
job_interval = 5m:
每 5 分钟检查一次这些条件是否满足
性能影响分析 #
| job_interval 设置 | 优点 | 缺点 |
|---|---|---|
| 1m | 快速响应策略变化 | 高调度开销 |
| 5m(默认) | 平衡性能和响应 | 标准设置 |
| 15m | 低调度开销 | 响应较慢 |
| 30m | 最小开销 | 响应很慢 |
资源消耗对比 #
假设集群有 100 个托管索引
job_interval = 1m:
- 每小时检查次数: 60
- 每次扫描: 100 个索引
- 总检查: 6,000 次/小时
- CPU 开销: 高 ❌
job_interval = 5m:
- 每小时检查次数: 12
- 每次扫描: 100 个索引
- 总检查: 1,200 次/小时
- CPU 开销: 中等 ✅
job_interval = 15m:
- 每小时检查次数: 4
- 每次扫描: 100 个索引
- 总检查: 400 次/小时
- CPU 开销: 低 ✅
使用场景 #
推荐使用默认值的场景 #
- 标准日志管理: 按天滚动的日志索引
- 常规业务: 不需要极快响应
- 稳定环境: 集群负载正常
推荐减少间隔的场景 #
- 快速 rollover: 需要快速滚动索引
- 高频数据: 数据增长非常快
- 时间敏感: 策略转换时间要求严格
推荐增加间隔的场景 #
- 大规模集群: 托管索引数量很多
- 负载敏感: 希望减少调度开销
- 长周期策略: 策略转换以天为单位
常见 ILM 操作 #
ILM 支持的操作
Rollover (滚动):
- 创建新索引
- 将别名指向新索引
- 条件: 大小、年龄、文档数
Shrink (收缩):
- 减少主分片数
- 优化索引结构
- 用于旧数据
Force Merge (强制合并):
- 合并段文件
- 释放空间
- 提升查询性能
Freeze (冻结):
- 降低内存占用
- 仍可查询
- 写入开销最小
Delete (删除):
- 删除整个索引
- 释放存储空间
- 清理过期数据
注意事项 #
与 sweep_period 协调: 两个配置需要合理搭配。
动态更新: 支持动态更新,修改后立即生效。
策略条件: 确保策略中的条件设置合理。
资源监控: 监控 ILM 任务对集群资源的影响。
测试验证: 新策略应在测试环境验证后再部署到生产。
时间精度: 操作执行的延迟最多为 job_interval 时间。
大批量操作: 避免大量索引同时触发策略转换。
日志保留: 确保删除策略符合数据保留要求。
备份策略: 重要数据删除前应做好备份。
版本兼容: 确保集群版本支持使用的 ILM 功能。





