定期删除elasticsearch集群45天以上的索引
2020-03-05 16:36
134 查看
原文链接:https://www.geek-share.com/detail/2718723090.html
背景
本文环境为7.2版本,已经启用x-pack,所以调用接口需要输入密码,每次删除之前都会快照到AWS-S3,做保存,方便查阅。
索引需要定期快照,索引的后缀日期格式为YYYY.MM.DD,如:test-2017.10.01
思路
通过_cat/indices接口可以获取当前ES全部索引信息,取第三列为索引名。过滤出索引名中带有的日期字符串,然后进行日期比较,早于45天前的日期便可通过日期模糊匹配索引来删除。
完整的脚本如下:
#!/bin/bash ################################### #snapshot$DAY天前的ES集群的索引 ################################### DAY=45 function date2days { echo "$*" | awk '{ z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3; j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633; print j }' } function snapshot_indices(){ comp_date=`date -d "$DAY day ago" +"%Y-%m-%d"` date1="$1 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 -e "\n$1时间早于$comp_date,进行索引备份" #转换一下格式,将类似2017-10-01格式转化为2017.10.01 format_date=`echo $1| sed 's/-/\./g'` input=`echo $1| sed 's/-//g'` InpuDays=$(date2days ${input:0:4} ${input:4:2} ${input:6:2}) SysDays=$(date2days `date +"%Y %m %d"`) let result=$SysDays-$InpuDays curl -XPUT http://localhost:9203/_snapshot/s3-test/%3Csnapshot-test-%7Bnow%2Fd-${result}d%7D%3E?wait_for_completion=true -uelastic:QDULVrlPoe0yS0ro91qF -H 'Content-Type: application/json' -d'{ "indices": "*'$format_date'", "ignore_unavailable": true, "include_global_state": false}' fi } function delete_indices(){ comp_date=`date -d "$DAY day ago" +"%Y-%m-%d"` date1="$1 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 -e "\n$1时间早于$comp_date,进行索引删除" #转换一下格式,将类似2017-10-01格式转化为2017.10.01 format_date=`echo $1| sed 's/-/\./g'` curl -XDELETE http://localhost:9203/*$format_date -uelastic:QDULVrlPoe0yS0ro91qF fi } curl -XGET http://localhost:9203/_cat/indices -uelastic:QDULVrlPoe0yS0ro91qF | awk -F" " '{print $3}' | awk -F"-" '{print $NF}' | egrep "[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq | sed 's/\./-/g' | while read LINE do #调用索引snapshot函数 snapshot_indices $LINE #调用索引删除函数 delete_indices $LINE done
将脚本配置到定时任务定期执行即可。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 定期删除elasticsearch集群10天以上的索引
- 定期删除elasticsearch 的index 索引
- elasticsearch5.0.1集群一次误删除kibana索引引发的血案
- elasticsearch5.0.1集群一次误删除kibana索引引发的血案
- elasticsearch 索引创建,插入,修改,删除
- elasticsearch5.0.1集群索引分片丢失的处理
- 分布式搜索elasticsearch java API 之(四)------删除索引数据
- es故障节点恢复后加入集群导致删除索引重新出现
- elasticsearch手动创建和删除索引
- Elasticsearch索引的操作,利用kibana(如何创建/删除一个es的索引?)
- Elasticsearch定时删除索引
- Elasticsearch之创建索引、删除索引、索引设置、配置分析器、自定义分析器。
- Elasticsearch 索引、更新、删除文档
- elasticsearch核心知识--47.创建更新删除索引以及自定义分词器。
- Elasticsearch索引删除
- 定时删除elasticsearch索引
- Elasticsearch 学习笔记 索引创建、插入、查询、修改、删除
- ELK-ElasticSearch集群索引分配异常问题处理
- 每天定时删除30天前的elasticsearch索引的python脚本
- ElasticSearch:集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间关系