Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我再次将同一文档放入ElasticSearch,它是否会重新为其编制索引?_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Full Text Search - Fatal编程技术网 elasticsearch,full-text-search,Search,elasticsearch,Full Text Search" /> elasticsearch,full-text-search,Search,elasticsearch,Full Text Search" />

如果我再次将同一文档放入ElasticSearch,它是否会重新为其编制索引?

如果我再次将同一文档放入ElasticSearch,它是否会重新为其编制索引?,search,elasticsearch,full-text-search,Search,elasticsearch,Full Text Search,这显然是一个关于ES内部的问题 我拥有的是一个定制的搜索引擎,它建立在ES之上,提供来自多个供应商的数据。为了查明自上次编制索引以来,特定文档是否发生了更改(例如,在定期从供应商处重新提取文档的过程中-无法要求某些供应商“仅提供自该日期以来更改的文档”),我必须以某种方式对其进行检查以进行修改,并将其放入ES中,以便为更改的文档编制索引iff 问题:ES是否在内部跟踪文档校验和,以查看是否确实需要对其重新编制索引?(当然,我认为这不是一些HTML,其中一些字段、时间戳等在每个GET上动态更新)

这显然是一个关于ES内部的问题

我拥有的是一个定制的搜索引擎,它建立在ES之上,提供来自多个供应商的数据。为了查明自上次编制索引以来,特定文档是否发生了更改(例如,在定期从供应商处重新提取文档的过程中-无法要求某些供应商“仅提供自该日期以来更改的文档”),我必须以某种方式对其进行检查以进行修改,并将其放入ES中,以便为更改的文档编制索引
iff

问题:ES是否在内部跟踪文档校验和,以查看是否确实需要对其重新编制索引?(当然,我认为这不是一些HTML,其中一些字段、时间戳等在每个
GET
上动态更新)


如果这样做了(也就是说,为相同的文档重新编制索引的摊销成本可以忽略不计),显然,这将简化我的更新。

如果使用更新API,则无法检测到操作。您可以在这里看到no op的源代码。注意“额外工作”注释。这绝对是一件值得考虑的事情。p>
请记住,更新API往往比普通的批量插入慢得多。当您使用相同id为同一索引中的文档编制索引时,让ES增加_版本号的常规插入将更快。。。但它们也会产生GC和索引压力。

如果使用完全相同的文档ID,那么可以反复为同一文档重新编制索引,搜索结果不会改变。@Val:我明白,但我的问题是关于一次又一次地为同一文档重新编制索引的成本。我们讨论了多少文档,以及可能重新编制索引的频率是多少?如果您使用相同的ID进行更新,并且文档完全相同,则ES不会执行任何操作,它将返回noop。这是更新,不是索引操作。对于索引操作a,与其重新编制索引,不如启用
detect\u noop
进行更新。此外,在回答“ES是否在内部跟踪文档校验和以查看是否确实需要重新编制索引?”时,我很确定答案是否定的。如果我理解正确(我可能不理解),这是将源文档作为映射读取,将其与插入的文档进行比较,然后评估它们是否是相同的对象(而不是使用校验和的系统编号或该类型的对象)