【问题标题】:ElasticSearch: creating new inverted-index after every updateElasticSearch:每次更新后创建新的倒排索引
【发布时间】:2015-04-26 01:53:42
【问题描述】:

在我对 ElasticSearch 索引过程的理解中,我遇到了一个问题。我已经读过this article,它说,倒排索引存储所有文档的所有标记并且它是不可变的。因此,要更新它,我们必须删除它并重新索引所有数据以使所有文档都可搜索。

但我已经阅读了有关部分更新文档的信息(自动将它们标记为“已删除”并插入+索引新文档)。但是在那些没有提到重新索引所有以前的数据的文章中。

所以,接下来我不能正确理解:当我更新文档(包含 100 000 个单词的文本文档)并且已经存储了一些其他索引文档时 - 是否真的会在每个 UPDATE 或 INSERT 操作重新索引过程中进行我所有的文件?

基本上我依赖默认的 ElasticSearch 设置(5 个主分片,每个分片一个副本,集群中有 2 个节点)

【问题讨论】:

  • 我也建议不要在帖子中问一个以上的问题
  • 谢谢,我已经更新了我的问题

标签: java elasticsearch lucene


【解决方案1】:

您可以只更新一个文档(即重新索引,这与从索引中删除并再次添加它基本相同),请参阅:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/update-doc.html 这将处理整个索引,因此您不需要重新索引所有其他文档。

我不确定你所说的“保存”操作是什么意思,你可能想用一个例子来澄清一下。

截至更新10万字的文档所需时间,建议大家试试看。

【讨论】:

  • 是的,我读过这个。 “这将处理整个索引”是什么意思?如果我插入或更新文档,倒排索引存储就会过时,因此,如果我理解正确的话,应该重新索引同一索引中的所有文档......但是更新如何在 1 秒内可用(我'已经在指南中阅读过这个)如果我有大量的文档在存储?
  • 表示更新后的文档会先从索引中删除,然后再重新添加,因此倒排索引在更新后将是最新的。更新怎么可能只需要 1 秒?这是一个更深层次的问题,足以说明 Lucene 开发人员是聪明人,我鼓励研究 indexing implementation
  • 谢谢!几分钟前,我找到了帮助我理解“碎片片段”含义的帖子。 stackoverflow.com/questions/15426441/… 每次我们更新文档时,它都会在一个新的段(新的倒排索引)上建立索引,一段时间后这些索引在后台合并
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2016-04-06
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多