2016-03-21 170 views
0

我正在尋找一種方法來使用腳本刪除舊的Logstash索引,我的logstash索引被命名爲logstash-2016.02.29, logstash-2016.03.01 ...,此時我在chrome中使用名爲Sense的擴展來刪除索引。見截圖,或者我也可以使用curl刪除索引,curl -XDELETE 'http://myIpAddress:9200/logstash-2016.02.29'使用bash腳本刪除logstash索引/ s使用bash腳本

enter image description here

我想編寫,將日常運行,並刪除比Elasticsearch2週年長logstash指數的腳本。這是可能的,如果是這樣,我怎麼能使用索引名稱的日期呢?

+1

這個答案可能會幫助:http://stackoverflow.com/questions/33430055/removing- old-index-in-elasticsearch/33430132#33430132(策展人工具) – Val

+0

hey val,感謝看起來可能會做這項工作。稍後我會測試它,併發布我的腳本和鏈接到您的建議。 – Gman

回答

0

只需使用find命令:

find . logstash* -mtime +14 -type f -delete 

這種搜索在當前目錄及以下,其名稱爲「logstash」開頭的所有文件,是超過14天,然後刪除它們。

如果文件的時間是完全不可靠的,你必須使用文件名,嘗試這樣的事情:

#!/bin/bash 
testdate=$(date -d '14 days ago' '+%Y%m%d') 
for f in ./logstash-[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]; do 
    dt=$(basename "${f//.}") 
    dt=${dt#logstash-} 
    [ $dt -le $testdate ] && rm -f "$f" 
done