2015-02-24 151 views
3

我在理解ElasticSearch索引過程中遇到了一個問題。我已經閱讀this article,其中說,倒排索引存儲所有文檔的所有標記,並且它是不可變的。因此,要更新它,我們必須將其刪除並重新索引所有數據以使所有文檔都可搜索。ElasticSearch:在每次更新後創建新的倒排索引

但我已閱讀關於部分更新文件(automaticaly標記爲「已刪除」並插入+索引新文件)。但在那些沒有提到重新索引所有以前的數據的文章中。

因此,我不能正確理解下一個:當我更新文檔(包含100 000個字的文本文檔)並且已經存儲了一些其他索引文檔時 - 我確實會對每個UPDATE或INSERT操作重新索引我的所有文件的過程?

Basicly我依靠默認ElasticSearch設置(5塊主碎片以每分片一個複製品和在簇2個節點)

+0

我也建議不要在帖子中多問一個問題 – bpgergo 2015-02-24 12:52:14

+0

謝謝,我已經更新了我的問題 – maret 2015-02-24 12:57:01

回答

1

可以只具有更新的文件(即重新索引,這基本上是與從除去索引並再次添加),請參閱:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/update-doc.html這將處理整個索引,因此您不需要重新索引每個其他文檔。

我不確定「保存」操作的意思,你可以用一個例子來說明。

至於更新100K字文檔所需的時間,我建議您嘗試一下。

+0

是的,我讀過這個。什麼意思是「這會照顧整個指數」?如果我插入或更新文檔,倒排索引存儲變得過時,因此,如果我理解正確,那麼同一索引中的所有文檔都應該重新索引。但是如何在1秒內獲得更新(I如果我在存儲中有大量文檔,那麼在指南中已經閱讀過這些內容了? – maret 2015-02-24 13:03:22

+0

這意味着更新的文檔將首先從索引中刪除,然後再次添加,因此反向索引將在更新之後保持最新。如何更新只需要1秒?這是一個更深層次的問題,在這裏可以說Lucene開發人員是聰明人,我鼓勵研究[索引實現](http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/core/SRC/JAVA /組織/阿帕奇/ lucene的/索引/)。 – bpgergo 2015-02-24 13:36:05

+1

謝謝!幾分鐘前,我發現這篇文章幫助我理解「碎片段」的含義。 http://stackoverflow.com/questions/15426441/basics-about-segments-in-elasticsearch每次我們更新文檔時,它都會被索引到一個新的分段(新的倒排索引),並且一段時間後,這些索引被合併到後臺 – maret 2015-02-24 14:13:05

相關問題