ElasticSearch 自动删除索引

发布于 2022-01-11  33.14k 次阅读


1、index template 配置 index lifecycle ,不是通过 template创建的索引不会生效

2、crontab 脚本

#!/bin/bash
###################################
#删除早于15天的ES集群的索引
###################################
function delete_indices() {
    comp_date=`date -d "15 day ago" +"%Y-%m-%d"`
    date1="$1 00:00:00"
    date2="$comp_date 00:00:00"

    t1=`date -d "$date1" +%s`
    t2=`date -d "$date2" +%s`

    if [ $t1 -le $t2 ]; then
        echo "$1时间早于$comp_date,进行索引删除"
        #转换一下格式,将类似2022-10-01格式转化为2022.10.01
        format_date=`echo $1| sed 's/-/\./g'`
        curl --insecure --anyauth -u elastic:oR8vwg6aHm668cRME -XDELETE http://172.18.236.71:9200/*-$format_date
    fi
}

curl --insecure --anyauth -u elastic:oR8vwg6aHm668cRME -XGET http://172.18.236.71:9200/_cat/indices | awk -F" " '{print $3}' | awk -F"-" '{print $NF}' | egrep "[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq  | sed 's/\./-/g' | while read LINE
do
    #调用索引删除函数
    delete_indices $LINE
done
[root@iZwz9awdu50xrn0trultvtZ elk]# crontab -l
01 01 * * * sh /docker/elk/es-index-clear.sh > /dev/null 2>&1