信创环境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}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络协议——VRRP(虚拟路由冗余协议)原理与配置

1. VRRP概述 单网关出现故障后下联业务中断,配置两个及以上的网关时由于IP地址冲突,导致通讯时断时续甚至通信中断。VRRP组播类的网络层协议 2. 协议版本 VRRP v2: 支持认证,仅适用于IPv4网络 VRRP v3: 不支持认证, 适用于IPv4和IPv6两种网…

Revit 2025新功能一览~

Hello大家好!我是九哥~ Revit2025已经更新,安装后,简单试了下,还是挺不错的,流畅度啊,新功能啊,看来还是有听取用户意见的,接下来就简单看看都有哪些新功能。 好了,今天的…

蓝桥杯刷题 前缀和与差分-[3142]可获得的最小取值(C++)

问题描述 妮妮学姐手头有一个长度为n的数组a,她想进行次操作来取出数组中的元素。每次操作必须选择以 下两种操作之一: 取出数组中的最大元素 取出数组中的最小元素和次小元素 妮妮学姐希望在进行完 次操作后,取出的数的和最小。她感觉有些困难&…

【大数据存储】实验七 Spark RDD

Spark RDD操作实验 一、实验目的 (1)掌握使用Spark访问本地文件和HDFS文件的方法 (2)熟练掌握在Spark Shell中对Spark RDD的操作方法 (3)掌握Spark应用程序的编写、编译打包和运行方法 二、.实验平台 …

【学习笔记】java项目—苍穹外卖day09

文章目录 用户端历史订单模块1. 查询历史订单1.1 需求分析和设计1.2 代码实现1.2.1 user/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl1.2.4 OrderMapper1.2.5 OrderMapper.xml1.2.6 OrderDetailMapper 1.3 功能测试 2. 查询订单详情2.1 需求分析和设计2.2 代码实…

JavaScript中定时器怎么工作有什么缺点?

JavaScript中的定时器主要有两种类型:setTimeout 和 setInterval。 setTimeout:这是一个一次性定时器,当指定的时间间隔(以毫秒为单位)过后,就会执行一次函数。例如: setTimeout(function() {…

解锁未来:大模型GPT的应用架构与创新实践

在人工智能的黄金时代,大模型如GPT(Generative Pre-trained Transformer)已成为技术创新和应用发展的前沿。它不仅重新定义了人机交互的方式,还在多个领域内展现出了巨大的应用潜力。本文将深入探讨大模型GPT的应用架构&#xff0…

时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测

时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测 目录 时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测(完整源码…

微软文本转语音和语音转文本功能更新,效果显著!

今天我要和大家分享一个新功能更新——微软的文本转语音和语音转文本功能。最近,微软对其AI语音识别和语音合成技术进行了重大升级,效果非常好,现在我将分别为大家介绍这两个功能。 先来听下这个效果吧 微软文本转语音和语音转文本功能更新 …

绿联 安装YesPlayMusic,一款高颜值的第三方网易云播放器

绿联 安装YesPlayMusic,一款高颜值的第三方网易云播放器 1、镜像 fogforest/yesplaymusic:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、端口设置 容器端口80,不可变更; 本…

计算机网络(四) 网络层

网络层 一、网络层的功能1.异构网络互连2.路由与转发3.SDN的基本概念4.拥塞控制 二、路由算法1.静态路由和动态路由2.距离-向量路由算法3.链路状态路由算法4.层次路由 三、IPv41.IPv4分组2.IPv4地址与NAT3.子网划分与子网掩码、CIDR4.ARP、DHCP与ICMP 四、IPv61.IPv6特点2.IPv6…

WordPress建站教程:10步快速搭建个人网站

WordPress是一个广泛使用的内容管理系统(CMS),凭借其用户友好的界面和大量可定制的主题和插件,为WordPress 提供了多功能性和灵活性,可用于创建各种类型的网站,包括个人博客、B2B企业网站、B2C外贸网站等&a…

Python如何通过网络编程socket实现服务端和客户端?

Python中内置了一个socket模块,可以快速实现网络之间进行传输数据。 1. 实现服务端 import socket# 1.监听本机的IP和端口 # 创建一个TCP套接字# socket模块:Python中的socket模块提供了对套接字编程的支持,允许通过网络进行通信。 # socke…

SSM学习——Spring JDBC

Spring JDBC 概念 Spring的JDBC模块负责数据库资源管理和错误处理,简化了开发人员对数据库的操作。 Spring JDBC通过配置数据源和JDBC模板来配置。 针对数据库操作,Spring框架提供了JdbcTemplate类,它是Spring框架数据抽象层的基础&#…

的C++奇迹之旅:值和引用的本质效率与性能比较

文章目录 请添加图片描述 [TOC](文章目录) 📝引用# 🌠引用概念**引用**不是新定义一个变量,而是给**已存在变量取了一个别名**,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。>定义&#…

【C++风云录】加密的未来:现代C++库的密码学之旅

加密与安全的艺术:深入探索现代C加密库 前言 随着数字化时代的到来,数据安全成为了一个不可忽视的重要问题。为了保护敏感数据和保障通信的安全性,开发人员需要选择适合的加密与安全解决方案。本文将介绍几个流行的C加密库,包括…

ArcGIS 10.8中文版详细安装教程(附安装包)

ArcGIS 10.8中文版详细安装教程(附安装包) 关键词:ArcGIS 10.8中文版安装 1.概述 ArcGIS Desktop 10.8中文版是由ESRI公司开发的一款专业的地理信息系统,一套完整的桌面GIS软件套件,它包含ArcMap、ArcCatalog、ArcG…

C++——模板初阶

泛型编程 C语言中交换两个变量数据的内容一般是这样实现的 #include<iostream>using namespace std;void swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; } int main() {int x 5;int y 7;swap(&x,&y);cout << "x" << x << …

最优算法100例之30-表示数值的字符串

专栏主页&#xff1a;计算机专业基础知识总结&#xff08;适用于期末复习考研刷题求职面试&#xff09;系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。例如&a…

easyexcel 动态列导出

1. 引入easyexcel <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version></dependency> 2.导出write public void export(HttpServletResponse response) {try {String f…