Elasticsearch 实战:数据自动化清理完全指南(ILM + 定时删除 + 最佳实践)

Elasticsearch 实战:数据自动化清理完全指南(ILM + 定时删除 + 最佳实践)

|-----------------------------|
| 🌺The Begin🌺点点关注,收藏不迷路🌺 |

前言

在生产环境使用 Elasticsearch 时,日志、监控、行为数据会源源不断写入,磁盘很容易被打爆,查询速度急剧下降,甚至导致集群宕机。

手动删除索引既危险又低效 ,因此必须实现自动化数据清理

ES 官方提供了非常完善的自动化清理方案,最简单、最稳定、最推荐的就是 ILM(Index Lifecycle Management)索引生命周期管理,配合按天索引,就能实现"7天自动删除、30天自动归档"等需求。

本文从实战角度 出发,用最清晰的步骤、流程图、可直接复制的 DSL,教你在 Elasticsearch 中实现100% 自动化数据清理


一、自动化清理的核心思路

ES 不推荐直接删除文档,最优方案是按时间创建索引(每天一个索引) ,然后通过策略自动删除旧索引

例如:

  • logs-2025.12.01
  • logs-2025.12.02
  • logs-2025.12.03

到期直接删除整个索引。

自动化清理整体流程

数据按天写入索引
ILM 策略监控索引年龄
超过保留时间
自动删除旧索引
释放磁盘空间


二、方案1:使用 ILM 实现自动清理(官方首选,生产标准)

ILM(Index Lifecycle Management)是 ES 内置的索引生命周期管理功能,无需脚本、无需第三方工具

支持:

  • 自动删除
  • 自动冻结
  • 自动归档
  • 自动滚动索引

步骤 1:创建 ILM 清理策略

需求:保留 7 天日志,第 8 天自动删除

执行 DSL:

json 复制代码
PUT _ilm/policy/logs-7d-delete-policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "1d"
          }
        }
      },
      "delete": {
        "min_age": "7d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

步骤 2:创建索引模板绑定 ILM

json 复制代码
PUT _index_template/template-logs
{
  "index_patterns": ["logs-*"],
  "template": {
    "settings": {
      "index.lifecycle.name": "logs-7d-delete-policy",
      "index.lifecycle.rollover_alias": "logs-alias"
    }
  }
}

步骤 3:创建初始化索引

json 复制代码
PUT logs-000001
{
  "aliases": {
    "logs-alias": {
      "is_write_index": true
    }
  }
}

完成!

以后每天自动创建新索引,7 天后旧索引自动删除


三、方案2:按时间删除索引(简单粗暴,无需ILM)

如果你的索引是按天创建:
logs-2025.12.01

可以使用 索引通配符 + 定时删除

删除 7 天前的索引

json 复制代码
DELETE logs-2025.12.*

配合 Linux crontab 定时删除

创建脚本 clean-es.sh

bash 复制代码
#!/bin/bash
date=$(date -d '7 days ago' +%Y.%m.%d)
curl -XDELETE "http://localhost:9200/logs-$date" -u elastic:123456

加入定时任务:

复制代码
0 1 * * * /root/clean-es.sh

四、方案3:使用 Curator 批量删除(企业级)

Curator 是 ES 官方的索引管理工具,支持复杂条件删除。

安装:

bash 复制代码
pip install elasticsearch-curator

配置删除策略:

yaml 复制代码
actions:
  1:
    action: delete_indices
    filters:
      - filtertype: pattern
        value: logs-*
      - filtertype: age
        source: name
        direction: older
        unit: days
        unit_count: 7

运行:

bash 复制代码
curator config.yml actions.yml

五、三种方案对比

方案 难度 稳定性 生产推荐度
ILM 生命周期 极高 ⭐⭐⭐⭐⭐
定时脚本删除 ⭐⭐⭐
Curator ⭐⭐⭐⭐

六、ILM 自动清理流程图

创建ILM策略
绑定索引模板
数据写入
每天自动滚动新索引
旧索引超过7天
ILM自动删除
磁盘空间释放


七、生产环境最佳实践

  1. 日志类数据必须按天创建索引
  2. 优先使用 ILM,不要用脚本删
  3. 设置保留时间:日志 7~15 天
  4. 禁止直接删除文档,删除索引性能高100倍
  5. 定时清理前先备份快照
  6. 避免业务高峰删除,安排在凌晨 1~2 点

八、总结

Elasticsearch 自动化数据清理非常简单:

  1. 按天建索引
  2. 使用 ILM 策略自动删除(官方首选)
  3. 无需手动操作,安全稳定

这套方案是生产环境标准方案,可以支撑大规模日志、监控、用户行为数据的自动化管理。


|---------------------------|
| 🌺The End🌺点点关注,收藏不迷路🌺 |

相关推荐
微硬创新10 小时前
耐达讯自动化16路0-20mA转PROFINET协议转换模块技术说明
人工智能·网络协议·自动化·信息与通信
小柒儿33611 小时前
从单Agent到多智能体系统:多智能体协作重塑自动化边界
运维·自动化
未来之窗软件服务12 小时前
商家自动化任务下一代架构混沌无界思维-东方仙盟
架构·自动化·仙盟创梦ide·东方仙盟·自动化任务
QYR-分析13 小时前
注塑机机械手自动化装备行业发展研判:存量升级催生增量红利,2032 年市场规模逼近 9 亿美元
运维·自动化
Elasticsearch14 小时前
一个字段,覆盖所有模态:Elasticsearch 的 semantic 字段如何自动索引和搜索图像、音频、视频和 PDF
elasticsearch
自动化测试行业观察14 小时前
从“自动化”到“智能化”:TestMan AI测试平台引领软件测试范式转移
运维·自动化测试·人工智能·测试工具·自动化·app测试·移动应用测试
Elastic 中国社区官方博客14 小时前
使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持
大数据·elasticsearch·搜索引擎·全文检索·jenkins
RPA机器人就用八爪鱼15 小时前
八爪鱼RPA客服质检自动化:会话记录采集与关键词分析方案
运维·自动化·rpa
Elasticsearch17 小时前
jina-reranker-v3.5:通过混合 Attention 和自蒸馏实现更快的 Listwise Reranking
elasticsearch
Elasticsearch17 小时前
Elasticsearch 转型为 Agent 基础设施:混合搜索、长期记忆与工程化框架
elasticsearch