当前位置: 首页 > news >正文

信创环境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 ]] ; thenINDEX_OPEN=`echo "$INDEX_MSG" |grep open | awk '{print $3}' | sort`
elseINDEX_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_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"-28"fit_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  ]; thenecho "close ${index} index"curl -u "$ES_USER_PWD" -XPOST ${ELASTIC_URL}/$index/_closefi
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 ]; thenINDEX_DATE=$INDEX_DATE"-12-31"#es按月存,设置为该月份的最后一天elif [ $len1 -lt 10 ]; then  INDEX_DATE=$INDEX_DATE"-28"fit_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  ]; thenecho "delete ${index} index"curl -u "$ES_USER_PWD" -XDELETE ${ELASTIC_URL}/$indexfi
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}

相关文章:

  • 优化 Nginx 处理 504 Gateway Timeout 错误
  • 【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
  • 即刻体验 | 使用 Flutter 3.19 更高效地开发
  • 【软件工程】详细设计(一)
  • Autodesk AutoCAD 2025 (macOS, Windows) - 自动计算机辅助设计软件
  • 文件操作讲解
  • Golang基础-9
  • 后端前行Vue之路(三):计算属性和监视属性
  • YARN集群 和 MapReduce 原理及应用
  • Git 常用命令集
  • GitGithub小册:版本管理必备利器
  • 超文本传输协议HTTP
  • exec命令 – 调用并执行指定的命令
  • 路径规划——曲线拟合详解(一):多项式轨迹与QP优化(minimum-snap算法核心部分)
  • PHP教程_PHP5函数str_replace替换字符串中的字符
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • django开发-定时任务的使用
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • export和import的用法总结
  • extract-text-webpack-plugin用法
  • java第三方包学习之lombok
  • leetcode-27. Remove Element
  • leetcode388. Longest Absolute File Path
  • storm drpc实例
  • 动态魔术使用DBMS_SQL
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 服务器从安装到部署全过程(二)
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 码农张的Bug人生 - 见面之礼
  • 每天10道Java面试题,跟我走,offer有!
  • 前端js -- this指向总结。
  • 前端临床手札——文件上传
  • 异步
  • 用element的upload组件实现多图片上传和压缩
  • ​水经微图Web1.5.0版即将上线
  • #QT(TCP网络编程-服务端)
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (2)(2.10) LTM telemetry
  • (2020)Java后端开发----(面试题和笔试题)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (二)springcloud实战之config配置中心
  • (九)c52学习之旅-定时器
  • (循环依赖问题)学习spring的第九天
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)scrum常见工具列表
  • (转)大型网站架构演变和知识体系