删除ES索引里面的数据 您所在的位置:网站首页 es删除索引 删除ES索引里面的数据

删除ES索引里面的数据

#删除ES索引里面的数据| 来源: 网络整理| 查看: 265

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

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

image.png

  下面的脚本,我找了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定期删除数据



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有