门网站制作,帮公司做网站,电子产品网站建设 实训报告,中企动力 做网站 怎么样背景
elastic-curator在信创环境无现成安装包#xff0c;且现成一般无法联网#xff0c;此时通过脚本管理es索引是最佳选择。
1, 脚本内容: es-close-del.sh
[rootmyprojtest001 ]# cat es-close-del.sh
#/bin/bash#elastic地址
ELASTIC_URL127.0.0.1:9200
#默认的删除时间…背景
elastic-curator在信创环境无现成安装包且现成一般无法联网此时通过脚本管理es索引是最佳选择。
1, 脚本内容: es-close-del.sh
[rootmyprojtest001 ]# cat es-close-del.sh
#/bin/bash#elastic地址
ELASTIC_URL127.0.0.1:9200
#默认的删除时间
DELETE_MONTH6
#默认的关闭时间
CLOSE_MONTH1
#默认index
#INDEX_NAMEs_awqed_
INDEX_NAME
ES_USER_PWDelastic:123456#索引列表:例如 cs_myproj_2024 , qqq_myproj_2024_01, test_myproj_2024_01_03
# echo t1.2023.03_03 |egrep -o [0-9]{4}([_.-][0-9]([_.-][0-9])?)?|xargs |tr [:punct:] -
##输出结果2023-03-03
INDEX_MSGcurl -s -u $ES_USER_PWD -XGET ${ELASTIC_URL}/_cat/indices | grep _myproj_
if [[ -z $INDEX_NAME ]] ; thenINDEX_OPENecho $INDEX_MSG |grep open | awk {print $3} | sort
elseINDEX_OPENecho $INDEX_MSG |grep $INDEX_NAME | grep open | awk {print $3} | sort
fi#关闭索引的截止日期
CLOSE_DATEdate -d ${CLOSE_MONTH} months ago %Y-%m-%d
t_end_closedate -d ${CLOSE_DATE} %s#删除索引的截止日期
DELETE_DATEdate -d ${DELETE_MONTH} months ago %Y-%m-%d
t_end_deldate -d ${DELETE_DATE} %s#当前日期
t_enddate %s
#遍历open的索引,判断是否应该关闭
for index in $INDEX_OPEN
do#获取索引日期#echo -------$index--------#INDEX_DATE$(echo $index|sed -E s([a-zA-Z0-9_-])_myproj_g |sed s_-g)INDEX_DATE$(echo $index|egrep -o [0-9]{4}([_.-][0-9]([_.-][0-9])?)?|tr [:punct:] -)len1${#INDEX_DATE} #es按年存,设置为该年份的最后一个月截止 xx_2024 -- xx_2024_12_31if [ $len1 -lt 5 ]; thenINDEX_DATE$INDEX_DATE-12-31#es按月存,设置为该月份的最后一天截止 xx_2024_01 -- xx_2024_01_28elif [ $len1 -lt 10 ]; then INDEX_DATE$INDEX_DATE-28fit_startdate -d ${INDEX_DATE} %sx$((t_end - t_start))##比截止日期早的数据#时间差几个月(不足1月就为0: 例如 24/300): 保证有1个月数据x2$((x / 3600 /24 /30 -1 ))if [ ${t_start} -lt ${t_end_close} ] [ $x2 -ge $CLOSE_MONTH ]; thenecho -e \n close ${index} indexcurl -u $ES_USER_PWD -XPOST ${ELASTIC_URL}/$index/_closefi
done#删除
#遍历open的索引,判断是否应该删除
INDEX_ALLecho $INDEX_MSG |grep close | awk {print $3} | sort
for index in $INDEX_ALL
do#获取索引日期#echo -----$index--------#INDEX_DATE$(echo $index|sed -E s([a-zA-Z]_?)g|sed s_-g)#INDEX_DATE$(echo $index|sed -E s([a-zA-Z0-9_-])_myproj_g |sed s_-g)INDEX_DATE$(echo $index|egrep -o [0-9]{4}([_.-][0-9]([_.-][0-9])?)?|tr [:punct:] -)len1${#INDEX_DATE} #es按年存,设置为该年份的最后一个月if [ $len1 -lt 5 ]; thenINDEX_DATE$INDEX_DATE-12-31#es按月存,设置为该月份的最后一天elif [ $len1 -lt 10 ]; then INDEX_DATE$INDEX_DATE-28fit_startdate -d ${INDEX_DATE} %sx$((t_end - t_start))##比截止日期早的数据#时间差几个月(不足1月就为0: 例如 24/300): 保证有1个月数据x2$((x / 3600 /24 /30 -1))if [ ${t_start} -lt ${t_end_del} ] [ $x2 -ge $DELETE_MONTH ]; thenecho -e \n delete ${index} indexcurl -u $ES_USER_PWD -XDELETE ${ELASTIC_URL}/$indexfi
done1, 脚本执行验证
[rootmyprojtest001 ]# cat es-close-del.sh
close monitor_myproj_2023_09_07 index
{acknowledged:true,shards_acknowledged:true,indices:{monitor_myproj_2023_09_07:{closed:true}}}delete monitor_myproj_2023_09_07 index
{acknowledged:true}