Elasticsearch 如何清理旧索引(删除过期数据)?

清理 ES 旧索引的三种方式:手动 DELETE 索引、Curator 定时任务、以及现代的 ILM(索引生命周期管理)自动按保留期删除。本文给出三种方案与 ILM 完整配置。

最佳实践
Elasticsearch 如何清理旧索引(删除过期数据)?封面

现代方案是 ILM(Index Lifecycle Management):给索引挂生命周期策略,到期自动删除,全自动无需运维;老集群用 Curator 定时任务;一次性清理由 DELETE API 手动执行。

方案一:手动删除

# 列出所有索引按时间排序
curl -s 'es:9200/_cat/indices?v&s=creation.date'

# 删除 30 天前的某个索引
curl -XDELETE 'es:9200/logs-2024.01.01'

方案二:ILM 自动生命周期(推荐)

PUT _ilm/policy/logs_policy
{
  "policy": {
    "phases": {
      "hot": { "actions": { "rollover": { "max_age": "1d", "max_size": "30gb" } } },
      "delete": { "min_age": "30d", "actions": { "delete": {} } }
    }
  }
}

挂到索引模板:"settings": {"index.lifecycle.name": "logs_policy"}——索引满 30 天自动删除,还可配置 warm/cold 降级到廉价存储。

方案三:Curator 定时任务

# curator action 文件
actions:
  1:
    action: delete_indices
    filters:
      - filtertype: pattern
        value: '^logs-'
      - filtertype: age
        source: creation_date
        direction: older
        days: 30

cron 每天执行 curator action.yml

观测云对照

观测云日志支持多索引与存储策略:按索引设置保留期(如 7/30/180 天),到期自动清理,控制台直接配置。

常见问题(FAQ)

Q:删除索引空间立刻释放吗? 是,段合并后磁盘逐步回收;force merge 可加速。

Q:误删能恢复吗? 只有快照(snapshot)能救——重要数据先开快照策略。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台