删除ES超过 90 天的 `logstash-*` 索引

半兽人 发表于: 2025-05-12   最后更新时间: 2025-05-12 14:56:25  
{{totalSubscript}} 订阅, 40 游览

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.15logstash-2023.12.31 等格式的索引
  • 删除那些日期早于 90 天前的索引
  • 使用 curl 直接操作 Elasticsearch,无需 Kibana

执行

  1. 保存为 clear-logstash.sh
  2. 加执行权限:

    chmod +x clear-logstash.sh
    
  3. 运行:

    ./clear-logstash.sh
    
更新于 2025-05-12

查看ElasticSearch更多相关的文章或提一个关于ElasticSearch的问题,也可以与我们一起分享文章