ELK:ElasticSearch定期关闭和删除索引脚本

记录下如何进行定期清除或关闭ES索引~~

我们都知道,ES索引处于open状态,就会占用内存+磁盘;
如果将索引close,只会占用磁盘,当索引比较多的时候影响查询速度

遇到的项目需求为按天建立索引,存储6个月的数据,保留两个月的热点数据

方便删除6个月前的索引并且关闭两个月前的索引,脚本如下:

默认参数为
集群地址:http://127.0.0.1:9200
删除几个月前:6
关闭几个月前:2
index名称前缀:index,后面为日期格式,如index-2020.09.16
需要时这种格式的索引哦,其他的修改下获取日期的方式
可以根据实际情况修改脚本或者添加对应的参数

注意5.x版本和6.x版本获取索引时回显不一样,5.x版本已经关闭的索引不显示健康状况,6.x版本显示,所以

5.x版本获取列表为

awk '{print $2}'
#删除索引列表
INDEX_LIST_CLOSE=`curl -XGET ${DEFUALT_ELASTIC_URL}/_cat/indices | grep ${DEFUALT_INDEX_NAME} | grep close | awk '{print $2}' | sort`

而6.x版本为

awk '{print $3}'
#删除索引列表
INDEX_LIST_CLOSE=`curl -XGET ${DEFUALT_ELASTIC_URL}/_cat/indices | grep ${DEFUALT_INDEX_NAME} | grep close | awk '{print $3}' | sort`
#/bin/bash

#elastic地址
DEFUALT_ELASTIC_URL=$1
#默认的删除时间
DEFUALT_DELETE_MONTH=$2
#默认的关闭时间
DEFUALT_CLOSE_MONTH=$3
#默认index
DEFUALT_INDEX_NAME=$4


if [[ "${DEFUALT_ELASTIC_URL}" == "" ]];then
        echo "Please input elastic url, if not, default http://127.0.0.1:9200"
        DEFUALT_ELASTIC_URL=http://127.0.0.1:9200
fi

if [[ "${DEFUALT_DELETE_MONTH}" == "" ]];then
        echo "Please input delete month, if not, default 6"
        DEFUALT_DELETE_MONTH=6
fi

if [[ "${DEFUALT_CLOSE_MONTH}" == "" ]];then
        echo "Please input close month, if not, default 2"
        DEFUALT_CLOSE_MONTH=2
fi
if [[ "${DEFUALT_INDEX_NAME}" == "" ]];then
        echo "Please input index name, if not, default index"
        DEFUALT_INDEX_NAME=index
fi

echo ${DEFUALT_ELASTIC_URL}

#索引列表
INDEX_LIST=`curl -XGET ${DEFUALT_ELASTIC_URL}/_cat/indices | grep ${DEFUALT_INDEX_NAME}| grep open | awk '{print $3}' | sort`

for index in $INDEX_LIST
do
        #关闭
        #获取索引日期
        INDEX_DATE=${index#*-}
        CLOSE_DATE=`date -d "${DEFUALT_CLOSE_MONTH} months ago" +%Y-%m-%d`
        tmp=`echo "${INDEX_DATE}" | sed -e "s/\./-/g"`
        t1=`date -d "${tmp}" +%s`
        t2=`date -d "${CLOSE_DATE}" +%s`
        if [ ${t1} -lt ${t2} ]; then
                echo "close ${DEFUALT_INDEX_NAME}-${INDEX_DATE} index"
                curl -XPOST ${DEFUALT_ELASTIC_URL}/${DEFUALT_INDEX_NAME}-${INDEX_DATE}/_close
        fi
done


#删除索引列表
INDEX_LIST_CLOSE=`curl -XGET ${DEFUALT_ELASTIC_URL}/_cat/indices | grep ${DEFUALT_INDEX_NAME} | grep close | awk '{print $2}' | sort`

for index in $INDEX_LIST_CLOSE
do
        #删除
        #获取索引日期
        INDEX_DATE=${index#*-}
        #获取需要删除的日期
        DELETE_DATE=`date -d "${DEFUALT_DELETE_MONTH} months ago" +%Y-%m-%d`
        tmp=`echo "${INDEX_DATE}" | sed -e "s/\./-/g"`
        t1=`date -d "${tmp}" +%s`
        t2=`date -d "${DELETE_DATE}" +%s`
        if [ ${t1} -lt ${t2} ]; then
                echo "del ${DEFUALT_INDEX_NAME}-${INDEX_DATE} index"
                curl -XDELETE ${DEFUALT_ELASTIC_URL}/${DEFUALT_INDEX_NAME}-${INDEX_DATE}
        fi
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值