更新API Elasticsearch会删除一些嵌套字段

时间:2019-02-22 13:19:33

标签: elasticsearch

想象一下以下文档进入我的索引:

PUT test

POST test/_doc/1
{
  "name": "old_name",
  "data": {
    "foo": "bar",
    "lol": "alright"
  },
  "collections": ["first", "second"]
}

我想将我的文档转换为:

{
    "name" : "new_name",
    "data": {
      "foo": "lol"
    },
    "collections": ["first", "second"]
}

问题是,如果我使用如下所示的更新API:

POST test/_doc/1/_update
{
    "doc" : {
        "name" : "new_name",
        "data": {
          "foo": "lol"
        }
    }
}

文档变为

{
  "name": "new_name",
  "data": {
    "foo": "lol",
    "lol": "alright"
  },
  "collections": [
    "first",
    "second"
  ]
}

并且"lol"属性尚未删除。

我只希望我的请求删除嵌套在data键中的所有属性(如果更新请求中不存在这些属性)将被删除,但我希望保留其他属性(如collections键)。

我知道ElasticSearch文档说:

  

更新API还支持传递部分文档,该文档将是   合并到现有文档中(简单的递归合并,内部   合并对象,替换核心的“键/值”和数组)

我可以轻松地回答他们的问题吗,我应该发出多个请求吗?

0 个答案:

没有答案