ES-自动删除7天前索引日志
自动获取ES所有索引,排除以 . 开头的索引
删除7天前的索引日志数据
#!/bin/bash
# Elasticsearch 配置
ES_HOST="http://localhost:9200" # Elasticsearch 的主机和端口
DELETE_DAYS=7
LOG_FILE="/tmp/delete_old_indices.log" # 日志文件路径
# 计算删除日期(7 天前的日期)
DELETE_DATE=$(date -d "7 days ago" +%Y-%m-%d)
# 列出所有索引
INDEX_LIST=$(curl -s -X GET "$ES_HOST/_cat/indices?h=index")
# 记录开始时间到日志文件
echo "Start deleting indices on $CURRENT_DATE" >> "$LOG_FILE"
# 遍历索引并删除符合条件的索引
for INDEX in $INDEX_LIST; do
# 检查索引名称是否不以 . 开头
if [[ "$INDEX" != .* ]]; then
# 提取索引名称的日期部分(假设索引名称格式为 YYYY.MM.DD)
INDEX_DATE=$(echo $INDEX | grep -oP '\d{4}\.\d{2}\.\d{2}' || echo "")
# 将索引日期格式转换为 YYYY-MM-DD
INDEX_DATE_CONVERTED=$(echo $INDEX_DATE | sed 's/\./-/g')
# 判断索引日期是否早于删除日期
if [[ -n "$INDEX_DATE_CONVERTED" && "$INDEX_DATE_CONVERTED" < "$DELETE_DATE" ]]; then
echo "Deleting index: $INDEX" | tee -a "$LOG_FILE"
curl -s -X DELETE "$ES_HOST/$INDEX"
fi
fi
done
# 记录结束时间到日志文件
echo "Finished deleting indices on $(date +%Y-%m-%d)" >> "$LOG_FILE"
crontab
0 2 * * * sh /data/script/auto-clean-es-log.sh
Last updated