首页 > 解决方案 > 可以提供整个文档以通过查询更新吗?

问题描述

我想根据其字段搜索存储在 ElasticSearch 中的文档,并用新版本覆盖整个文档。我是 ES 新手,但据我所知,如果我通过 ES 分配的文档搜索文档,我只能使用 Update _id,所以我希望使用 Update By Query 来执行此操作。不幸的是,如果我使用按查询更新,那么我需要提供一个脚本来更新我关心的字段。如下所示:

POST my-index-000001/_update_by_query
{
  "script": {
    "source": "ctx._source.count++",
    "lang": "painless"
  },
  "query": {
    "term": {
      "user.id": "kimchy"
    }
  }
}

我的问题是我的文档有几十个字段,我不知道其中哪些会发生变化。我可以遍历它们并构建脚本,但我希望有一种方法可以简单地提供您想要的文档,并让与您的查询匹配的任何内容都被该文档覆盖。这可以通过查询更新吗?_id或者,除了执行更新之外,还有其他方法可以匹配其他内容吗?

标签: elasticsearchelasticsearch-7

解决方案


您的问题并不完全清楚,您是否尝试更新给定 ID 的整个文档?如果是,您可以使用 put 调用简单地覆盖现有文档:

PUT 索引名称/_id

这将覆盖现有索引,因此请确保您在 PUT 调用中发送完整的文档,而不仅仅是已更改的字段。


推荐阅读