私のインデックスフォーマット
XXX-XXX-XXX-2019年6月27日
XXX-XXXX-2019年6月27日
スクリプトのアイデア:
日によって分割存在ES、上のすべてのインデックスを取得し、その後、月と比較して、インデックス時間の日前に、日付を削除することは月未満であります
#!/ binに/ bashのの #は1ヶ月のインデックスを削除するにelasticserch CMD_ECHO = ' エコー' SCRIPT_NAME = ` ベース名 $ 0 ` LOG_PRINT = " evalの$ CMD_ECHO \" [$ SCRIPT_NAME] \ "$(日付+ @ "%Y %mの%dの%T " )[INFO]:" TIME_AGO = 30 es_cluster_ip = 127.0。0.1 関数delete_index(){ comp_date = ' 日付 -d " $ {TIME_AGO}日前" +" %Y-%M-%D " ` DATE1 = " $ {1} 0時00分00秒" DATE2 = " $ {comp_date} 0時00分00秒" index_date = ' 日付 -d " $ {DATE1} " + %S` limit_date = ' 日付 -d " $ {DATE2} " +%S` なら [$ index_date -le $ limit_date]。その後、 $ LOG_PRINT " $ 1は以前の$ {} TIME_AGO日前より、削除タスクを実行します" >> tmpです。= ` エコー $ 1 | AWK -F " - " ' {$ 1"印刷$ 2 $ 3。 ""。 "} ' ` カール -XDELETEます。http:// $ {es_cluster_ip}:9200 / * $のdel_dateを>> tmp.txt Fiを } #は、取得日が ですべてのインデックス カール -XGETます。http:// $ {es_cluster_ip}:9200 / _cat /インデックス| awkの-F "" '{$ 3印刷}' | egrepの"。[0-9] * \ [0-9] * \ [0-9] *" | awkの-F " - " '{印刷$ NF}' | awkの-F "" '{印刷$((NF-2)) " - " $((NF-1)) " - " $ NF}' | 並べ替え| UNIQ | 読み取りLINEはながら行う delete_indexの$ {LINE}が 完了