【问题标题】:get updated doc ids in Elasticsearch's update_by_query api在 Elasticsearch 的 update_by_query api 中获取更新的文档 ID
【发布时间】:2020-06-21 16:39:30
【问题描述】:

我使用以下查询来更新匹配文档中的一些权重。我需要获取更新的文档 ID 列表,但我不知道该怎么做?

    POST v1_shingle_analyzer/_update_by_query
{
    "script" : {
        "source": "ctx._source.content_completion.weight ++",
        "lang": "painless",
        "_source":true,
        "_source_includes":"_id"
    
    },
    "query": {
    "ids": {
      "values": ["ad22784cde0cecab176811ca9d77e7c2","dssdg784cde0cecab176811ca9fgdfg"]
     
    }
  }
}

【问题讨论】:

  • 我认为没有办法。可以再次查询Id,查看是否更新。
  • @Gibbs 你确定吗?如果你是,请将其发布为答案,我会接受它
  • 当然。我会再做一点研究,给你一个详细的答案。
  • 我也不认为有办法做到这一点,我效率较低,我想唯一的方法是首先获取所有文档的版本,然后在更新索引后查看是否为那些更新版本

标签: elasticsearch


【解决方案1】:

参考thisthis legend answerthis plugin 和一些 ES 论坛帖子、JIRA。

简答:

没有直接的方法可以做到这一点。您可能需要再次使用IDs 查询以检查它是否发生了变化。

详细回答:

根据documentation,响应没有返回更新后的IDs 的字段。

根据GitHub 链接,提到的插件已弃用/放弃对上下文的支持。但我认为

  1. 如果真的很重要,您可以查看源代码以找出更新 IDs 的方法。
  2. 我看到here 有一个响应选项。我们可以设置三个值。但它没有说明返回 ID。它说明了与哪个分片、更新什么类型等相关的选项。如果有任何调整的话,你可以看看这个。

请让我知道更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多