【问题标题】:Reindexing of the same document in Elasticsearch在 Elasticsearch 中重新索引同一文档
【发布时间】:2021-05-21 19:55:10
【问题描述】:

因此,最近我们将 ID 生成从自定义更改为 Elastic 自动生成。以前它是一个基于内容的函数,因此可以保证相同文档具有相同的 ID,但它被删除以应对重复。现在我们使用 Elastic 自己生成的 ID,所以相同的文档不会有相同的 ID。

如果我们更新插入具有相同内容和相同 ID 的现有文档会发生什么?它会触发重新索引吗?或者它会检测到什么都没有改变,什么也不做?

【问题讨论】:

    标签: elasticsearch elasticsearch-7


    【解决方案1】:

    是的,不会重新编制索引。下面是一个示例响应:

     {
      "_index" : "test",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "result" : "noop", // <============ No Operation
      "_shards" : {
        "total" : 0,
        "successful" : 0,
        "failed" : 0
      },
      "_seq_no" : 3,
      "_primary_term" : 3
    }
    

    【讨论】:

      【解决方案2】:

      我不确定您为什么要更新具有相同内容的相同 ID 的文档。默认情况下 ES 理解,如果文档没有变化,那么它不会更新文档,并将作为输出响应

      “结果”:“noop”

      但是如果您需要更新文档而不考虑,那么您可以通过设置禁用此行为

      “detect_noop”:假

      【讨论】:

      • 我们的自定义 ID 是一种优化,不会对同一个文档进行两次索引 :) 现在它已经消失了,我很好奇我们是否使用自动生成的 ID 丢失了任何东西
      • 很难说,但根据最佳实践,建议使用 ES 生成的 id,或者如果您有来自搜索流的源系统,则使用源系统 id。
      猜你喜欢
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 2019-01-23
      • 2018-04-15
      • 1970-01-01
      • 2021-08-14
      相关资源
      最近更新 更多