2016-10-18 35 views
0

我需要頻繁刪除文檔,但es只會將這些標記標記爲已刪除。如果有大量已刪除的文檔,查詢速度會降低嗎?是否有其他問題?很多被刪除的文檔會影響查詢速度嗎?

編輯

換句話說,我經常從index刪除大量文檔的,決不用force merge API來釋放磁盤使用情況,我會在一段時間後,有查詢的性能問題?

+0

檢查這些設置https://www.elastic.co/guide/en/ elasticsearch/reference/current/indices-optimize.html –

回答

1

必須只需發送HTTP POST請求您elasticsearch節點,在下面的結構

http://localhost:9200/your_index_name/_forcemerge

瞭解更多詳情,您可以。如果有很多的刪除閱讀本page

docs,查詢速度會降低嗎?

答案是肯定的

換句話說,我經常從索引中刪除了大量文檔的,決不使用武力合併API來釋放磁盤使用情況,我會後的查詢性能問題一段的時間?

當插入或更新操作過高(導致段變髒)時,elasticsearch會自動運行合併過程。另一方面,您可以使用forcemerge api自己對合並過程進行一些控制。

+0

我試過'強制合併',但刪除的文檔數量從500萬到300萬,我可以清除已刪除的文檔? –

+0

我自己試了一下,強制合併只刪除刪除的文檔,在我的情況下老版本的文檔仍然存在。我使用'hq' [plugin](http://www.elastichq.org/support_plugin.html)獲取有關我的節點的信息。它顯示了'forcemerge'後的已刪除文件是'0%' –

0

文檔被存儲在索引中,作爲在lucene中創建文檔時形成的段。從彈性文檔中刪除文檔實際上不會從基礎段中刪除文檔,這構成了ES的基本數據存儲。

是的,有很多已刪除的文檔會產生查詢性能問題,因爲查詢仍然會在刪除的段中搜索匹配的文檔。

Force_merge or optimize該索引通常是可以做的選擇,但是由於這是繁重的磁盤I/O操作,因此應該小心處理。

$ curl -XPOST 'http://localhost:9200/kimchy,elasticsearch/_optimize' 

$ curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true' 

你能解釋一下爲什麼你經常有這麼多的刪除。由於我們也經常大量刪除,但我們在索引級別處理它們。我們的刪除是針對特定日期範圍的文檔發生的,因此我們根據日期對文檔編制索引,並且在某個日期刪除文檔時,我們只需簡單地刪除索引即可。

如果您有文件被刪除的任何模式,我建議你他們在一個索引分離出來,只是刪除索引

相關問題