爲了澄清,問題是「我怎樣寫是在X天前,所以我可以將它們刪除文檔的查詢」。編輯
END
我們的代碼索引結果使用ElasticSearch查詢。我們希望每天運行一次清理工作,以刪除所有舊文檔。我們目前通過調用外部腳本來做到這一點,但爲了減少依賴關係,我們希望從Java中完成。
我無法弄清楚如何使用API查詢舊文檔......線索,幫助?
爲了澄清,問題是「我怎樣寫是在X天前,所以我可以將它們刪除文檔的查詢」。編輯
END
我們的代碼索引結果使用ElasticSearch查詢。我們希望每天運行一次清理工作,以刪除所有舊文檔。我們目前通過調用外部腳本來做到這一點,但爲了減少依賴關係,我們希望從Java中完成。
我無法弄清楚如何使用API查詢舊文檔......線索,幫助?
如果您刪除已經存儲一段時間的文檔,您可以設置一個TTL(生存時間)參數,一旦這段時間過去就設置文檔刪除位設置標誌。見here。希望這是您可以考慮的替代方案。
UPDATE
"query":{
"match_all": {}
},
"filter":{
range:{
"field":{
lte: 20140225,
gte: 20140201
}
}
}
我假設你想通過查詢來刪除。因此,這是Java API
http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/delete-by-query.html
爲
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
刪除日期範圍使用範圍查詢
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
例如與range: lt: '2014-01-01'
我發現了,但需要刪除基於其年齡... –
我已添加的範圍查詢對如何查詢文件的例子。但很誠實,我更喜歡TTL appropach。我寧願將文檔放在例如每天索引,將「熱門」索引放在別名中,當它們變老時,只需從別名中刪除索引並刪除整個索引。這完全取決於需要多少邏輯來定義「舊」。 – cfrick