用的时间一长集群健康值就会变成红色状态,需要清理下,网上也有其他很多清理的方法,试了下之后还是决定自己写个。直接写个Shell脚本就可以了

非常简单,需要用到一点Shell脚本语言的基础知识

1.Shell的date用法

2.Elasticsearch删除索引

#!/bin/sh
dateStringA=`date -d “- 35 day” “+%Y%m%d”`
dateStringB=`date -d “- 35 day” “+%Y-%m-%d”`
dateStringC=`date -d “- 35 day” “+%Y.%m.%d”`
#echo “${dateStringA}”
echo -e “${dateStringB}\n”
#echo “${dateStringC}”
curl -XDELETE “http://localhost:9200/*-${dateStringA}”
echo -e “\n”
curl -XDELETE “http://localhost:9200/*-${dateStringB}”
echo -e “\n”
curl -XDELETE “http://localhost:9200/*-${dateStringC}”
echo -e “\n”

因为来自于几个不同的服务中 日志索引的日期格式各不相同,所以写了几个不同的格式匹配。现学现用,没什么技术含量。

curl -XDELETE “http://localhost:9200/*-${dateStringA}”

就是删除名字匹配的索引的请求,然后再加个crontab任务就完成了。

crontab -e

10 1 * * * sh /tmp/es-index-clear.sh > /dev/null 2>&1

 

相关内容

Shell语法 https://www.jianshu.com/p/ed628dd99434

Shell语法date用法 https://blog.csdn.net/shandianling/article/details/7640933

elasticsearch按照日期定时批量删除索引 https://juejin.im/post/58e5de06ac502e006c254145

Elasticsearch 集群健康值红色终极解决方案 https://blog.csdn.net/laoyang360/article/details/78443006