2015-12-09 85 views

回答

5

你可以用delete by query插件來做到這一點。

假設你已經在你的食指一些timestampcreation date場,你的查詢將是這個樣子

DELETE /your_index/your_type/_query 
{ 
    "query": { 
    "range": { 
     "timestamp": { 
     "lte": "now-10y" 
     } 
    } 
    } 
} 

這將刪除10歲以上的記錄。

我希望這有助於

+0

有沒有辦法以腳本的形式做到這一點,所以我們不必手動運行查詢 – sri

+0

這個刪除查詢是否完全從索引中刪除記錄,並允許插入新記錄的空間 – sri

+0

您可以設置每天做一個'cron job',在執行刪除操作後記錄**不刪除**,**標記爲**刪除,在段合併期間它們實際上被刪除,您可能會看到索引大小增加刪除或更新,您可以使用[強制合併](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html)來優化您的索引 – ChintanShah25

4

拆分數據每天索引和使用別名作爲舊索引名。然後每天刪除每個索引。就像logstash:

日指數:logstash-20151011logstash-20151012,logstash-20151013

別名:logstash

然後每天刪除最後一個索引。

+1

使用多個索引是要走的路。要刪除較舊的索引,您可以使用策展人:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html – slim