想象一下以下文档进入我的索引:
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还支持传递部分文档,该文档将是 合并到现有文档中(简单的递归合并,内部 合并对象,替换核心的“键/值”和数组)
我可以轻松地回答他们的问题吗,我应该发出多个请求吗?