2016-03-21 36 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