elasticsearch更新与部分文档覆盖原始文档

时间:2017-04-27 22:59:57

标签: elasticsearch

elasticsearch update with partial document会覆盖原始文档而不是合并它。

我认为merge只会更新相应的属性或插入新的属性。我是否想念合并应该做什么?

这就是我的做法:

映射:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "user": {
          "type": "nested" 
        }
      }
    }
  }
}

索引doc:

PUT my_index/my_type/1
{
  "group" : "fans",
    "user" : [
      {
        "first" : "John",
        "last" :  "Doe",
        "age": 31
      },
      {
        "first" : "Foo",
        "last" :  "Bar",
        "age" : 26
       }
     ]
}

部分更新:

POST my_index/my_type/1/_update
{
  "doc": {
      "group" : "fans",
        "user" : [
        {
          "first" : "Joe",
          "last" :  "Smith",
        },
        {
          "first" : "Alice",
          "last" :  "Baz"
        }
      ]
  }
}

结果只是没有age属性的新文档。我可以保留不在部分更新中的属性吗?

1 个答案:

答案 0 :(得分:0)

您提供的POST不使用与原始PUT相同的索引和类型名称。请尝试使用POST my_index/my_type/1/_update代替POST test/type1/1/_update