使用bash脚本删除logstash索引

时间:2016-03-21 11:08:23

标签: linux bash elasticsearch logstash

我正在寻找一种使用脚本删除旧Logstash索引的方法,我的logstash索引名为logstash-2016.02.29, logstash-2016.03.01 ...,此时我使用名为Sense的chrome中的扩展来删除索引。看屏幕截图,或者我也可以使用curl删除索引curl -XDELETE 'http://myIpAddress:9200/logstash-2016.02.29'

enter image description here

我想编写一个每天运行的脚本,并从Elasticsearch中删除超过2周的logstash索引。这是可能的吗?如果可以的话,我该如何使用索引名称中的日期呢?

1 个答案:

答案 0 :(得分: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