从弹性搜索中删除特定日志

时间:2015-05-10 14:40:30

标签: elasticsearch

我在弹性搜索中保存了日志,我想在2015年5月删除具有@timestamp字段的日志 - 之前的所有日志都可以。

我将以下代码保存在名为' delete.conf'的文件中。

curl -XDELETE 'http://localhost:9200/_all/_query' -d '

{
    "range" : {
        "@timestamp" : { "from" : "2015-05-01 00:00:01", "to" : "2015-05-09 11:59:59"}
    }
}'

我使用以下命令在logstash中运行此文件:

logstash -f delete.conf

结果如此......

UOD-220076:bin student$ logstash -f delete.conf
Error: Expected one of #, input, filter, output at line 1, column 1 (byte 1) after 
You may be interested in the '--configtest' flag which you can
use to validate logstash's configuration before you choose
to restart a running system.

我已经检查并重新检查过,但我的代码无法解决问题。 另外,这是否是正确的'如何完成删除?

1 个答案:

答案 0 :(得分:0)

Logstash配置文件不能包含任何任意命令。它们具有特定的布局(更多信息here):

input {
    ...
}
filter {
    ...
}
output {
    ...
}

如果你想在shell中执行你的curl命令,它将无法工作,因为你的查询缺少query部分,它应该如下所示:

curl -XDELETE 'http://localhost:9200/_all/_query' -d '
{
    "query": {
        "range" : {
            "@timestamp" : { "gte" : "2015-05-01 00:00:01", "lte" : "2015-05-09 11:59:59"}
        }
    }
}'

请注意,from/to查询中的range已弃用,有利于gt/gtelt/lte

最后,如果您想在2015年5月删除所有日志,我建议您将结束日期设置为2015-05-31 23:59:59