如何通过Elasticsearch ILM删除30天旧日志(AWS部署v8.5.3)
解决AWS Marketplace部署的Elasticsearch 8.5.3删除30天旧日志的方法
前提说明
针对特定部署实例操作,确保你拥有该实例的管理员权限,操作前建议备份重要数据。
操作步骤
1. 定位目标日志索引
登录对应部署的Kibana控制台,打开Dev Tools,执行以下命令查看所有索引,筛选出存储日志的索引(通常命名如logstash-*、filebeat-*等):
GET _cat/indices?v
2. 单索引内删除30天旧数据
如果目标是清理单个索引中30天前的日志,执行以下命令(替换your-log-index为实际索引名):
POST your-log-index/_delete_by_query { "query": { "bool": { "filter": [ { "range": { "@timestamp": { "lt": "now-30d/d" } } } ] } } }
- 若你的日志使用其他时间字段(如
timestamp),替换@timestamp为对应字段名 now-30d/d表示当前时间往前推30天的凌晨,确保删除完整的30天前数据
3. 删除整批旧日期索引(适用于按日期分片的索引)
如果日志索引按日期命名(如filebeat-2024.01.01),可直接删除符合条件的旧索引:
- 先确认要删除的索引:
GET _cat/indices/filebeat-*?v&s=index
- 执行删除(示例:删除2024年1-4月的filebeat索引):
DELETE /filebeat-2024.0[1-4]*
4. 配置自动清理避免重复问题
为了不再手动清理,建议配置索引生命周期管理(ILM):
- 在Kibana进入Stack Management > Index Lifecycle Policies
- 创建新策略,设置Hot阶段保留活跃数据,添加Delete阶段并配置“30天后删除”规则
- 将策略关联到日志索引的模板或现有索引
特殊情况处理
如果存储已完全占满导致无法执行删除,需先在AWS Marketplace的Elasticsearch部署控制台临时扩容存储,再执行上述清理操作。
内容的提问来源于stack exchange,提问作者vbala vbala
相关产品推荐
相关产品推荐

