2015-05-10 41 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