刪除ES索引裏面的數據

  開發以前把接口日誌寫入ES時,感受設計並不合理。固然,我也不知道怎麼設計纔是合理的。總之,就是沒法像處理openresty日誌那樣,按天生成1個ES索引,這樣就能夠簡單匹配月份,直接刪除整個月的索引數據了。html

  可是,如今全部接口日誌寫入進1個索引裏。我想刪除幾百天,好比200天前的數據,研究了很久。shell

image.png

  下面的腳本,我找了2天,按照網上的文檔,也修改了2天。正好最近第3次開始學習shell,發現結合shell知識,解決問題仍是頗有效果。json

  下面的腳本,就能夠刪除200天前的ES數據。bash

[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地址app

第三列的「yqdlog」:索引名稱curl

第七列的「bank_interfacelog_createTime」:指定刪除的時間字段ide

第八列的「now-200d」:刪除數據的時間範圍,「-200d」,就是刪除200天前的數據oop

第十列:默認,也能夠自定義學習

  執行腳本:url

[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按期刪除數據

相關文章
相關標籤/搜索