es命令删除索引数据_删除ES索引里面的数据

本文介绍了一种使用Shell脚本配合ES命令删除200天前索引数据的方法,针对一个集中存储接口日志的索引。通过提供一个具体的脚本示例,展示了如何设置查询条件来删除指定时间范围内的记录。执行脚本后,虽然ES的head插件显示索引数据减少,但zabbix监控的磁盘空间占用并未立即下降,可能是因为ES的删除机制需要一段时间才会生效。
摘要由CSDN通过智能技术生成

开发之前把接口日志写入ES时,感觉设计并不合理。当然,我也不知道怎么设计才是合理的。总之,就是无法像处理openresty日志那样,按天生成1个ES索引,这样就可以简单匹配月份,直接删除整个月的索引数据了。

但是,现在所有接口日志写入进1个索引里。我想删除几百天,比如200天前的数据,研究了好久。

下面的脚本,我找了2天,按照网上的文档,也修改了2天。正好最近第3次开始学习shell,发现结合shell知识,解决问题还是很有效果。

下面的脚本,就可以删除200天前的ES数据。[root@iZ23ejm6lkdZ ~]# cat /yqd/sh/Clean_Elasticsearch_Yqdlog.sh

#!/bin/bash

curl  -X POST "10.253.40.87:9200/yqdlog/_delete_by_query?pretty" -H 'Content-Type:application/json' -d '

{

"query": {

"range": {

"bank_interfacelog_createTime": {

"gte": "now-200d",

"lte": "now",

"format": "epoch_millis"

}

}

}

}'

#     echo "已清除$index 索引内200天前数据~"

第三列的“10.253.40.87:9200”:ES地址

第三列的“yqdlog”:索引名称

第七列的“bank_interfacelog_createTime”:指定删除的时间字段

第八列的“now-200d”:删除数据的时间范围,“-200d”,就是删除200天前的数据

第十列:默认,也可以自定义

执行脚本:[root@iZ23ejm6lkdZ ~]# sh /yqd/sh/Clean_Elasticsearch_Yqdlog.sh

{

"took" : 2382512,

"timed_out" : false,

"total" : 8817667,

"deleted" : 8817667,

"batches" : 8818,

"version_conflicts" : 0,

"noops" : 0,

"retries" : {

"bulk" : 0,

"search" : 0

},

"throttled_millis" : 0,

"requests_per_second" : -1.0,

"throttled_until_millis" : 0,

"failures" : [ ]

}

执行脚本过程中,ES的head插件显示“yqdlog”索引数据有明显下降趋势,但是,zabbix监控的磁盘空间反而有更大的占用。

网上的文档说,ES的删除,不会立即生效,后期会自动删除。这个问题,有待研究。

次日再看zabbix,磁盘空间好像是有下降了。

参考文档:

https://www.cnblogs.com/abkn/p/10302883.html——es定期删除数据

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值