Elasticsearch删除天、小时的索引脚本

删除天脚本

获取输入的天数
DELTIME=30
echo "----------------------------删除天dy_ ------------------------------" >>${CLEAN_LOG}

#脚本的日志文件路径
CLEAN_LOG="/usr/local/clean_es_index_dy.log"
#索引前缀
INDEX_LOGST="*_dy_*"
#elasticsearch 的主机ip及端口
SERVER_PORT="10.218.94.85:10200"

#取出已有的索引信息
#INDEXS_ALL=$(curl -XGET "http://${SERVER_PORT}/_cat/indices?v" | awk '{print $3}')
#查询logstash-*的索引
INDEXS_KEY_LOGST=$(curl -XGET  "http://${SERVER_PORT}/_cat/indices?v"| grep "$INDEX_LOGST" | awk '{print $3}')
#删除多少天以前的日志,假设输入10,意味着10天前的日志都将会被删除
DELTIME=$DELTIME
echo "-------现在查询【 $DELTIME 】天之前的所有索引 -------" >>${CLEAN_LOG}

#seconds since 1970-01-01 00:00:00 seconds

SECONDS=$(date -d  "$(date  +%F) -${DELTIME} days" +%s)
echo "-------偏移日期--------$SECONDS-------------">>${CLEAN_LOG}
#判断日志文件是否存在,不存在需要创建。
if [ ! -f  "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#echo "$(date  +%F)" >> ${CLEAN_LOG}
#删除指定日期索引
echo "----------------------------clean time is $(date +%Y.%m.%d) ------------------------------" >>${CLEAN_LOG}
for del_index_logst in ${INDEXS_KEY_LOGST}
do
    indexDate=$( echo ${del_index_logst:0-6})
    echo "---------截取日期数值------$indexDate-------------">>${CLEAN_LOG}
    if grep '^[[:digit:]]*$' <<< "${indexDate}";then
        format_date=$(echo ${indexDate}| sed 's/\.//g')
        #format_date=$(echo ${indexDate}| sed 's/-//g') 
        #根据索引的名称的长度进行切割,不同长度的索引在这里需要进行对应的修改 日志格式为yyyy.mm.dd的或yyyy-mm-dd的
        indexSecond=$( date -d ${format_date} +%s )
        echo "---------实际索引日期转换------$indexSecond-------------">>${CLEAN_LOG}
        echo "---------比较结果------$(( $SECONDS - $indexSecond ))-------------">>${CLEAN_LOG}
        if [ $(( $SECONDS - $indexSecond )) -gt 0 ]
        then
        echo "-------del---${del_index_logst}" >> ${CLEAN_LOG}
            #取出删除索引的返回结果
        delResult=`curl -XDELETE "http://${SERVER_PORT}/${del_index_logst}?pretty" |sed -n '2p'`
        echo "delResult is ${delResult}" >>${CLEAN_LOG}       
        fi
    else
        echo 'no.'
    fi
done

echo "----------------------------end time is $(date +%Y%m%d) ------------------------------" >>${CLEAN_LOG}

删除小时脚本

#获取输入的天数

DELTIME=30
echo "----------------------------删除小时hr_ ------------------------------" >>${CLEAN_LOG}

#脚本的日志文件路径
CLEAN_LOG="/usr/local/clean_es_index_hr.log"
#索引前缀
INDEX_LOGST="*_hr_*"
#elasticsearch 的主机ip及端口
SERVER_PORT="10.218.94.85:10200"

#取出已有的索引信息
#INDEXS_ALL=$(curl -XGET "http://${SERVER_PORT}/_cat/indices?v" | awk '{print $3}')
#查询logstash-*的索引
INDEXS_KEY_LOGST=$(curl -XGET  "http://${SERVER_PORT}/_cat/indices?v"| grep "$INDEX_LOGST" | awk '{print $3}')
#删除多少天以前的日志,假设输入10,意味着10天前的日志都将会被删除
DELTIME=$DELTIME
echo "-------现在查询【 $DELTIME 】天之前的所有索引 -------" >>${CLEAN_LOG}

#seconds since 1970-01-01 00:00:00 seconds

SECONDS=$(date -d  "$(date  +%F) -${DELTIME} days" +%s)
echo "-------偏移日期--------$SECONDS-------------">>${CLEAN_LOG}
#判断日志文件是否存在,不存在需要创建。
if [ ! -f  "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#echo "$(date  +%F)" >> ${CLEAN_LOG}
#删除指定日期索引
echo "----------------------------clean time is $(date +%Y.%m.%d) ------------------------------" >>${CLEAN_LOG}
for del_index_logst in ${INDEXS_KEY_LOGST}
do
    indexDate=$( echo ${del_index_logst:0-8})
    echo "---------截取日期数值------$indexDate-------------">>${CLEAN_LOG}
    if grep '^[[:digit:]]*$' <<< "${indexDate}";then
        format_date=$(echo ${indexDate}| sed 's/\.//g')
        #format_date=$(echo ${indexDate}| sed 's/-//g') 
        #根据索引的名称的长度进行切割,不同长度的索引在这里需要进行对应的修改 日志格式为yyyy.mm.dd的或yyyy-mm-dd的
        indexSecond=$( date -d ${format_date} +%s )
        echo "---------实际索引日期转换------$indexSecond-------------">>${CLEAN_LOG}
        echo "---------比较结果------$(( $SECONDS - $indexSecond ))-------------">>${CLEAN_LOG}
        if [ $(( $SECONDS - $indexSecond )) -gt 0 ]
        then
        echo "-------del---${del_index_logst}" >> ${CLEAN_LOG}
            #取出删除索引的返回结果
        delResult=`curl -XDELETE "http://${SERVER_PORT}/${del_index_logst}?pretty" |sed -n '2p'`
        echo "delResult is ${delResult}" >>${CLEAN_LOG}       
        fi
    else
        echo 'no.'
    fi
done

echo "----------------------------end time is $(date +%Y%m%d) ------------------------------" >>${CLEAN_LOG}
echo "----------------------------删除小时hour_ ------------------------------" >>${CLEAN_LOG}
INDEX_LOGST="_hour_*"
#取出已有的索引信息
#INDEXS_ALL=$(curl -XGET "http://${SERVER_PORT}/_cat/indices?v" | awk '{print $3}')
#查询logstash-*的索引
INDEXS_KEY_LOGST=$(curl -XGET  "http://${SERVER_PORT}/_cat/indices?v"| grep "$INDEX_LOGST" | awk '{print $3}')
#删除多少天以前的日志,假设输入10,意味着10天前的日志都将会被删除
DELTIME=$DELTIME
echo "-------现在查询【 $DELTIME 】天之前的所有索引 -------" >>${CLEAN_LOG}

#seconds since 1970-01-01 00:00:00 seconds

SECONDS=$(date -d  "$(date  +%F) -${DELTIME} days" +%s)
echo "-------偏移日期--------$SECONDS-------------">>${CLEAN_LOG}
#判断日志文件是否存在,不存在需要创建。
if [ ! -f  "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#echo "$(date  +%F)" >> ${CLEAN_LOG}
#删除指定日期索引
echo "----------------------------clean time is $(date +%Y.%m.%d) ------------------------------" >>${CLEAN_LOG}
for del_index_logst in ${INDEXS_KEY_LOGST}
do
    indexDate=$( echo ${del_index_logst:0-8})
    echo "---------截取日期数值------$indexDate-------------">>${CLEAN_LOG}
    if grep '^[[:digit:]]*$' <<< "${indexDate}";then
        format_date=$(echo ${indexDate}| sed 's/\.//g')
        #format_date=$(echo ${indexDate}| sed 's/-//g') 
        #根据索引的名称的长度进行切割,不同长度的索引在这里需要进行对应的修改 日志格式为yyyy.mm.dd的或yyyy-mm-dd的
        indexSecond=$( date -d ${format_date} +%s )
        echo "---------实际索引日期转换------$indexSecond-------------">>${CLEAN_LOG}
        echo "---------比较结果------$(( $SECONDS - $indexSecond ))-------------">>${CLEAN_LOG}
        if [ $(( $SECONDS - $indexSecond )) -gt 0 ]
        then
        echo "-------del---${del_index_logst}" >> ${CLEAN_LOG}
            #取出删除索引的返回结果
        delResult=`curl -XDELETE "http://${SERVER_PORT}/${del_index_logst}?pretty" |sed -n '2p'`
        echo "delResult is ${delResult}" >>${CLEAN_LOG}       
        fi
    else
        echo 'no.'
    fi
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值