es数据迁移_Shell获取ES3天的索引列表进行迁移操作

3天前所有的历史索引操作方法

a2f561be99931bd8cd9da34c018b17f8.png

生产环境ES集群已切换为冷热架构,日志保留最近3天的索引在ssd节点就可以了,超过3天的索引可以迁移到warm节点了,如何通过shell脚本去实现呢?

当前我只有一个日志索引需要这样操作,索引的时间戳是2020.11.17这样的时间格式为结尾,先通过命令获取索引的时间戳,并按照时间由近到远排序

curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r

接下来的思路是我要截取3天之后的时间戳,通过哪个命令可以实现呢?查阅了一些资料,发现tail比较适合,具体如下:

tail -n -3 data.txt   #获取文件最后3行数据tail -n +3 data.txt  #获取文件3到最后一行数据

显然tail -n +3 data.txt 获取文件3到最后一行数据,符合我当前的需求,修改下命令,添加获取3天的日期列表:

curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r|tail -n +5

PS:tail -n +3 data.txt 是获取第三行开始到最后的,我们需要保留3天的索引,所以这里应该写+4,从第4行开始,这样就是保留了前3行的数据了,考虑容错多保留1天,所以这里我改为+5了。

有了列表,就可以写个简单的for循环了

#!/bin/bashindex=`curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r|tail -n +5`for i in $index;do   echo $i;   curl -XPUT http://es:9200/$i/_settings -d '{     "settings": {        "index.routing.allocation.require.box_type": "warm"        }   }' ;   sleep 10;done

有些变量还是写死的,获取到的列表会重复操作put操作,此脚本还很粗糙,对于3天前的索引可以批量操作。

只针对特定4天前当天的索引操作方法

后期针对每天的定时任务,把4天前的索引迁移过去就可以了,也避免了上个脚本列表里的重复执行。

通过date +%Y.%m.%d -d "-4 days"命令我们可以获取4天前的日期格式,如下(今天是17号)

# curl http://es:9200/ssys-log-`date +%Y.%m.%d -d "-4 days"`?pretty{  "ssys-log-2020.11.13" : {    "aliases" : { },    "mappings" : { },    "settings" : {      "index" : {        "routing" : {          "allocation" : {            "require" : {              "box_type" : "warm"            }          }        },        "number_of_shards" : "3",        "provided_name" : "ssys-log-2020.11.13",        "creation_date" : "1605527177922",        "number_of_replicas" : "1",        "uuid" : "LMeHqQy-SWK2D4zsvAwTrg",        "version" : {          "created" : "5050299"        }      }    }  }}

现在我做个测试,关闭4天前的索引

curl -XPOST http://es:9200/ssys-log-`date +%Y.%m.%d -d "-4 days"`/_close?pretty# 查询下索引的状态curl -XGET http://es:9200/_cat/indices/ssys-log-`date +%Y.%m.%d -d "-4 days"`?h=statusclose

测试结果是符合设想的,这样设置一个定时任务,每天执行一次,就可以每次把4天前的索引关闭了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值