Elasticsearch 实战:数据自动化清理完全指南(ILM + 定时删除 + 最佳实践)
- 前言
- 一、自动化清理的核心思路
- 自动化清理整体流程
- 二、方案1:使用 ILM 实现自动清理(官方首选,生产标准)
- 步骤 1:创建 ILM 清理策略
- 步骤 2:创建索引模板绑定 ILM
- 步骤 3:创建初始化索引
- 三、方案2:按时间删除索引(简单粗暴,无需ILM)
- 删除 7 天前的索引
- 配合 Linux crontab 定时删除
- 四、方案3:使用 Curator 批量删除(企业级)
- 五、三种方案对比
- 六、ILM 自动清理流程图
- 七、生产环境最佳实践
- 八、总结
🌺The Begin🌺点点关注,收藏不迷路🌺 |
前言
在生产环境使用 Elasticsearch 时,日志、监控、行为数据会源源不断写入,磁盘很容易被打爆,查询速度急剧下降,甚至导致集群宕机。
手动删除索引既危险又低效,因此必须实现自动化数据清理。
ES 官方提供了非常完善的自动化清理方案,最简单、最稳定、最推荐的就是 ILM(Index Lifecycle Management)索引生命周期管理,配合按天索引,就能实现“7天自动删除、30天自动归档”等需求。
本文从实战角度出发,用最清晰的步骤、流程图、可直接复制的 DSL,教你在 Elasticsearch 中实现100% 自动化数据清理。
一、自动化清理的核心思路
ES 不推荐直接删除文档,最优方案是按时间创建索引(每天一个索引),然后通过策略自动删除旧索引。
例如:
logs-2025.12.01logs-2025.12.02logs-2025.12.03
到期直接删除整个索引。
自动化清理整体流程
二、方案1:使用 ILM 实现自动清理(官方首选,生产标准)
ILM(Index Lifecycle Management)是 ES 内置的索引生命周期管理功能,无需脚本、无需第三方工具。
支持:
- 自动删除
- 自动冻结
- 自动归档
- 自动滚动索引
步骤 1:创建 ILM 清理策略
需求:保留 7 天日志,第 8 天自动删除
执行 DSL:
PUT_ilm/policy/logs-7d-delete-policy{"policy":{"phases":{"hot":{"actions":{"rollover":{"max_age":"1d"}}},"delete":{"min_age":"7d","actions":{"delete":{}}}}}}步骤 2:创建索引模板绑定 ILM
PUT_index_template/template-logs{"index_patterns":["logs-*"],"template":{"settings":{"index.lifecycle.name":"logs-7d-delete-policy","index.lifecycle.rollover_alias":"logs-alias"}}}步骤 3:创建初始化索引
PUTlogs-000001{"aliases":{"logs-alias":{"is_write_index":true}}}✅完成!
以后每天自动创建新索引,7 天后旧索引自动删除。
三、方案2:按时间删除索引(简单粗暴,无需ILM)
如果你的索引是按天创建:logs-2025.12.01
可以使用索引通配符 + 定时删除。
删除 7 天前的索引
DELETElogs-2025.12.*配合 Linux crontab 定时删除
创建脚本clean-es.sh:
#!/bin/bashdate=$(date-d'7 days ago'+%Y.%m.%d)curl-XDELETE"http://localhost:9200/logs-$date"-uelastic:123456加入定时任务:
0 1 * * * /root/clean-es.sh四、方案3:使用 Curator 批量删除(企业级)
Curator 是 ES 官方的索引管理工具,支持复杂条件删除。
安装:
pipinstallelasticsearch-curator配置删除策略:
actions:1:action:delete_indicesfilters:-filtertype:patternvalue:logs-*-filtertype:agesource:namedirection:olderunit:daysunit_count:7运行:
curator config.yml actions.yml五、三种方案对比
| 方案 | 难度 | 稳定性 | 生产推荐度 |
|---|---|---|---|
| ILM 生命周期 | 低 | 极高 | ⭐⭐⭐⭐⭐ |
| 定时脚本删除 | 低 | 中 | ⭐⭐⭐ |
| Curator | 中 | 高 | ⭐⭐⭐⭐ |
六、ILM 自动清理流程图
七、生产环境最佳实践
- 日志类数据必须按天创建索引
- 优先使用 ILM,不要用脚本删
- 设置保留时间:日志 7~15 天
- 禁止直接删除文档,删除索引性能高100倍
- 定时清理前先备份快照
- 避免业务高峰删除,安排在凌晨 1~2 点
八、总结
Elasticsearch自动化数据清理非常简单:
- 按天建索引
- 使用 ILM 策略自动删除(官方首选)
- 无需手动操作,安全稳定
这套方案是生产环境标准方案,可以支撑大规模日志、监控、用户行为数据的自动化管理。
🌺The End🌺点点关注,收藏不迷路🌺 |