ElasticSearch定时清理缓存索引

1. 背景:由于ES的日志索引每天都在增长,很快缓存就吃不消了, 需要定期清理一下过期不用的索引, 在此使用定期删除索引的方法

2. 脚本 delete_es_indices_over_15_day.sh

#!/bin/bash

#删除早于15天的ES集群的索引
function delete_indices() {
param=$(echo $1)
#截取索引的日期部分(用于下面的日期比较是否小于15日),我的索引是com-字符串后面的部分为日期, 比如: www.test.com-2020.08.08 dateValue=$(echo ${param#*com-})
#截取日期的前部分作为索引的名称(后续需要替换-为., 然后和日期拼接起来成为一个真正的索引名称,用于删除) name=$(echo ${param%-$dateValue*}) echo "name=$name date=$dateValue" comp_date=`date -d "15 day ago" +"%Y-%m-%d"` date1="$dateValue 00:00:00" date2="$comp_date 00:00:00" t1=`date -d "$date1" +%s` t2=`date -d "$date2" +%s` if [ $t1 -le $t2 ]; then echo "$1时间早于$comp_date,进行索引删除" #转换一下格式,将类似www-test-com格式转化为www.test.com format_name=`echo $name| sed 's/-/\./g'` #转换一下格式,将类似2020-10-01格式转化为2020.10.01 format_date=`echo $dateValue| sed 's/-/\./g'`
#拼接成索引名称 indexName="$format_name-$format_date"
#删除索引 curl -XDELETE http://localhost:9200/$indexName echo "$indexName删除成功" fi }
#注意, 由于我的日志都是包含有"com-"的字符串,故使用该字符串模糊查询索引列表 curl -XGET http://localhost:9200/_cat/indices | awk -F" " '{print $3}'|grep com- | uniq | sed 's/\./-/g' | while read LINE do #调用索引删除函数, 结果打印到日志 delete_indices $LINE >> /home/logs/delete_indices.log done

3. crontab定时配置,每天1点定时删除

0 1 * * * sh /home/delete_es_indices_over_15_day.sh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值