elasticsearch清除过期数据

  • Post author:
  • Post category:其他


版本:elasticsearch-7.3.2

脚本内容如下:

[root@access-server elasticsearch-7.3.2]# cat clear_data.py 
#coding=utf-8
import requests
import json
 
#es_host = '127.0.0.1' # Elasticsearch访问地址
es_host = '127.0.0.1'
 
headers = {
    'Content-Type': 'application/json'
}
 url中,用*匹配所有的索引,也可以写成logstash-* 匹配所有以logstash-开头的索引等等。
url = 'http://{}:9200/*/_delete_by_query?conflicts=proceed'.format(es_host)
 
data = {
    "query": {
        "range": {
            "@timestamp": {    # 这里我根据默认的时间来作为查询的时间字段,也可以是自定义的
                "lt": "now-7d",    # 这里是10天,时间可自定义
                "format": "epoch_millis"
            }
        }
    }
}
 
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
 
#删除后,需要执行forcemerge操作,手动释放磁盘空间
url2 ='http://{}:9200/_forcemerge?only_expunge_deletes=true&max_num_segments=1'.format(es_host)
response = requests.post(url2)
 
print(response.json())
·```

将脚本加到计划任务里
  • 3 * * * python /data/elasticsearch-7.3.2/clear_data.py >> /data/elasticsearch-7.3.2/logs/clear_data.log



版权声明:本文为tongzidane原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。