Bash 脚本:删除超过 90 天的 logstash-*
索引
#!/bin/bash
ES_HOST="11.96.40.4"
PORT=9200
THRESHOLD=$(date -d "90 days ago" +%Y.%m.%d)
# 列出所有 logstash-* 索引
curl -s "http://$ES_HOST:$PORT/_cat/indices/logstash-*?h=index" | while read index; do
date_part=$(echo "$index" | grep -oP '\d{4}\.\d{2}\.\d{2}')
if [[ -n "$date_part" && "$date_part" < "$THRESHOLD" ]]; then
echo "Deleting $index (date: $date_part < $THRESHOLD)"
curl -s -XDELETE "http://$ES_HOST:$PORT/$index"
fi
done
脚本说明
THRESHOLD
是“90天前”的日期,如2025.02.12
- 匹配
logstash-2024.01.15
、logstash-2023.12.31
等格式的索引 - 删除那些日期早于 90 天前的索引
- 使用 curl 直接操作 Elasticsearch,无需 Kibana
执行
- 保存为
clear-logstash.sh
加执行权限:
chmod +x clear-logstash.sh
运行:
./clear-logstash.sh