11天定时清理es数据shell脚本
时间: 2023-12-29 19:54:58 浏览: 79
好的,针对这个问题,我可以给出一个示例的 shell 脚本来实现定时清理 Elasticsearch 数据的功能。具体的脚本如下:
```shell
#!/bin/bash
# Elasticsearch 集群节点地址
ES_HOST="localhost:9200"
# 数据保存的索引名称
INDEX_NAME="my_index"
# 删除索引数据的时间阈值,单位为天
DAYS_THRESHOLD=11
# 获取当前时间
CURRENT_DATE=$(date +%s)
# 计算删除数据的时间戳
DELETE_DATE=$(expr $CURRENT_DATE - $DAYS_THRESHOLD \* 24 \* 60 \* 60)
# 构建删除请求体
DELETE_REQUEST_BODY="{\"query\":{\"range\":{\"@timestamp\":{\"lte\":$DELETE_DATE}}}}"
# 发送删除请求
curl -XPOST "$ES_HOST/$INDEX_NAME/_delete_by_query" -H 'Content-Type: application/json' -d "$DELETE_REQUEST_BODY"
```
该脚本的主要作用是利用 Elasticsearch 的 Delete By Query API 删除指定时间前的数据。其中,需要根据实际情况修改 ES_HOST、INDEX_NAME 和 DAYS_THRESHOLD 这三个变量。将脚本保存为一个文件,例如 `es_clean.sh`,然后使用 crontab 工具设置定时任务即可。例如,设置每天凌晨 3 点钟运行脚本的任务可以使用如下命令:
```shell
0 3 * * * /path/to/es_clean.sh
```
这样,脚本就会在每天的凌晨 3 点钟自动运行,定期清理 Elasticsearch 中指定索引的数据。
阅读全文