日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

calendar前推n天_Shell获取ES3天的索引列表进行迁移操作

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 calendar前推n天_Shell获取ES3天的索引列表进行迁移操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

生產環境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天前的索引關閉了。

總結

以上是生活随笔為你收集整理的calendar前推n天_Shell获取ES3天的索引列表进行迁移操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。