这显然是关于ES内部的问题。
我所拥有的是一个基于ES的自定义搜索引擎,它为来自多个供应商的数据提供支持。为了查明自上次索引以来特定文档是否发生了变化(例如,在定期从供应商处重新提取文件期间 - 没有办法询问某些供应商"只给我自那个日期以后更改的文件&#34 ;),我必须以某种方式检查它以进行修改并将其放入ES以便对文档进行索引t1.description
。
问题:ES是否在内部跟踪文档校验和以查看实际是否需要重新编制索引? (当然,我假设它不是某些HTML,其中某些字段,时间戳等在每个iff
上动态更新)。
如果确实如此(也就是说,重新索引相同的文档的摊销成本可以忽略不计),那么这显然会简化我的更新。
答案 0 :(得分:1)
如果您使用Update API,则无法检测到操作https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_detecting_noop_updates。你可以在这里看到no op的源代码。 https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/action/update/UpdateRequestBuilder。请注意“额外工作”评论。这绝对值得考虑。
请记住,更新API往往比普通的vanilla批量插入慢得多。当您使用相同的id索引同一索引中的文档时,让ES增加_version数量的常规插入将更快...但它们也会创建GC和索引压力。