让我们考虑以下情况--在“文章”文档(String)和视图(Int)中有两个字段。视图字段未编入索引。视图字段包含这篇文章被读了多少次的信息。
官方医生
我们还说,文件是不可改变的:它们不能改变,只能被取代。更新API必须遵守相同的规则。从外部看,我们似乎是在部分地更新一个文档。然而,在内部,更新API只是管理我们已经描述过的相同的检索-更改-再索引过程。
但是,如果我们对非索引字段进行分区更新-- elasticsearch会重新索引整个文档吗?例如,我想在每次有人阅读某篇文章时更新视图。如果将整个文档重新编入索引,则无法进行实时更新(因为操作太重)。因此,我将不得不延迟工作,例如,更新所有的文章,访问者已阅读每3-5-10分钟。还是我理解错了什么?
发布于 2015-03-09 09:54:29
,但是如果我们对未编入索引的字段进行分区更新-- elasticsearch会重新索引整个文档吗?
是的,虽然views字段不是单独索引的,但它是_source字段的一部分。_source字段包含在文档索引时发送给Elasticsearch的原始JSON,如果在搜索过程中文档上有匹配,则返回结果。_source字段使用Lucene中的文档进行索引。在您的更新脚本中,您将更改_source字段,以便重新编制整个文档的索引。
然后,可以评估以下策略。每次有人读到这篇文章时,我都会把更新发送给弹性。但是,refresh_interval我设置为30秒。如果在30秒内大约有1000个用户读过一篇文章,这种策略是否正常?
您仍在编制1000个文档的索引,1个文档将被索引为当前文档,999个文档将被标记为已删除,并在下一个Lucene合并期间从索引中删除。
https://stackoverflow.com/questions/28937946
复制相似问题