我在弹性搜索中保存了日志,我想在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 :(得分: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/gte
和lt/lte
。
最后,如果您想在2015年5月删除所有日志,我建议您将结束日期设置为2015-05-31 23:59:59
。