2015-02-24 63 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

相关问题