信创环境ES索引管理脚本:close, delete

背景

elastic-curator在信创环境无现成安装包,且现成一般无法联网,此时通过脚本管理es索引是最佳选择。

1, 脚本内容: es-close-del.sh

[root@myprojtest001 ]# cat es-close-del.sh
#/bin/bash

#elastic地址
ELASTIC_URL=127.0.0.1:9200
#默认的删除时间
DELETE_MONTH=6
#默认的关闭时间
CLOSE_MONTH=1
#默认index
#INDEX_NAME=s_awqed_
INDEX_NAME=
ES_USER_PWD=elastic:123456

#索引列表:例如 cs_myproj_2024 , qqq_myproj_2024_01, test_myproj_2024_01_03
INDEX_MSG=`curl  -s -u "$ES_USER_PWD" -XGET ${ELASTIC_URL}/_cat/indices | grep _myproj_ `
if [[ -z $INDEX_NAME ]] ; then
  INDEX_OPEN=`echo "$INDEX_MSG" |grep open | awk '{print $3}' | sort`
else
  INDEX_OPEN=`echo "$INDEX_MSG" |grep $INDEX_NAME | grep open | awk '{print $3}' | sort`
fi

#关闭索引的截止日期
CLOSE_DATE=`date -d "${CLOSE_MONTH} months ago" +%Y-%m-%d`
t_end_close=`date -d "${CLOSE_DATE}" +%s`

#删除索引的截止日期
DELETE_DATE=`date -d "${DELETE_MONTH} months ago" +%Y-%m-%d`
t_end_del=`date -d "${DELETE_DATE}" +%s`

#当前日期
t_end=`date +%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')
	len1=${#INDEX_DATE} 

	#es按年存,设置为该年份的最后一个月截止 xx_2024 --> xx_2024_12_31
	if   [ $len1 -lt 5 ]; then
	    INDEX_DATE=$INDEX_DATE"-12-31"
	#es按月存,设置为该月份的最后一天截止 xx_2024_01 --> xx_2024_01_28
        elif [ $len1 -lt 10 ]; then  
	    INDEX_DATE=$INDEX_DATE"-28"
	fi
    t_start=`date -d "${INDEX_DATE}" +%s`
    x=$((t_end - t_start))

	##比截止日期早的数据
    #时间差几个月(不足1月就为0: 例如 24/30=0): 保证有1个月数据
    x2=$((x / 3600 /24 /30 -1 ))
    if [ ${t_start} -lt ${t_end_close} ] && [ $x2 -ge $CLOSE_MONTH  ]; then
            echo "close ${index} index"
            curl -u "$ES_USER_PWD" -XPOST ${ELASTIC_URL}/$index/_close
    fi
done


#删除
#遍历open的索引,判断是否应该删除
INDEX_ALL=`echo "$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')
	len1=${#INDEX_DATE} 

	#es按年存,设置为该年份的最后一个月
	if   [ $len1 -lt 5 ]; then
	    INDEX_DATE=$INDEX_DATE"-12-31"
	#es按月存,设置为该月份的最后一天
        elif [ $len1 -lt 10 ]; then  
	    INDEX_DATE=$INDEX_DATE"-28"
	fi
    t_start=`date -d "${INDEX_DATE}" +%s`
    x=$((t_end - t_start))

	##比截止日期早的数据
    #时间差几个月(不足1月就为0: 例如 24/30=0): 保证有1个月数据
    x2=$((x / 3600 /24 /30 -1))
    if [ ${t_start} -lt ${t_end_del} ] && [ $x2 -ge $DELETE_MONTH  ]; then
            echo "delete ${index} index"
            curl -u "$ES_USER_PWD" -XDELETE ${ELASTIC_URL}/$index
    fi
done

1, 脚本执行验证

[root@myprojtest001 ]# 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}

相关推荐

  1. 环境ES索引管理脚本:close, delete

    2024-04-06 03:30:03       36 阅读
  2. es 深入了解和索引生命周期管理

    2024-04-06 03:30:03       30 阅读
  3. 系统软件开发环境搭建(QT篇)

    2024-04-06 03:30:03       47 阅读
  4. ES清理索引镜像

    2024-04-06 03:30:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 03:30:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 03:30:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 03:30:03       87 阅读
  4. Python语言-面向对象

    2024-04-06 03:30:03       96 阅读

热门阅读

  1. 代码随想录-13day:二叉树2

    2024-04-06 03:30:03       29 阅读
  2. 【二分与前缀和】python例题详解

    2024-04-06 03:30:03       33 阅读
  3. minicap安装教程

    2024-04-06 03:30:03       100 阅读
  4. OJ练习第190题——坐标移动

    2024-04-06 03:30:03       30 阅读
  5. 探索Django:打造高效、可扩展的Web应用(下)

    2024-04-06 03:30:03       41 阅读
  6. BL202 耦合器可扩展0-5V输入

    2024-04-06 03:30:03       35 阅读
  7. 常规的k8s的监控指标

    2024-04-06 03:30:03       39 阅读
  8. Spring注入方式解析与实践

    2024-04-06 03:30:03       35 阅读
  9. Python笔记|列表推导式

    2024-04-06 03:30:03       41 阅读