2015-05-10 43 views
0

我有弹性搜索保存的日志,我想删除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. 

我已检查并重新检查,但不能得到我的代码有什么问题。 此外,这是否是完成删除的“正确”方式?

+0

这是一个与elasticsearch对话的curl命令。你可以直接从你的Unix命令行执行它,不需要使用logstash来执行它。 –

回答

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/torange查询赞成gt/gtelt/lte已被弃用。

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

+0

感谢Val - 但我仍然收到错误,粘贴在下面。错误:预期在#1,第1列(字节1)之后输出#,输入,过滤器,输出 您可能对'--configtest'标志感兴趣,您可以使用 验证logstash的配置,然后再选择 重启正在运行的系统。 – DannyKELK

+0

没有必要为此使用logstash。你应该只在你的shell中运行curl命令。请再试一次,让我知道。 – Val

+0

Val,我的代码现在看起来像这样............. curl -XDELETE'http:// localhost:9200/_all/_query'-d' { “query”:{ “range”:{ “@timestamp”:{“gte”:“01/05/2015:00:00:00”,“lte”:“30/05/2015:11:59:59”} # “@timestamp”:{“gte”:“2015年5月1日,00:00:01”,“lte”:“2015年5月9日,00:01:00”} } } }'现在看结果像这样............ org.elasticsearch.index.query.QueryParsingException:[logstash-2015.04.29]无法在org.elasticsearch.index.query.IndexQueryParserService.parse中解析 \t(IndexQueryParserService .java – DannyKELK