空嵌套对象,对ElasticSearch进行部分更新

时间:2019-01-24 16:08:15

标签: elasticsearch

我在ElasticSearch中将以下文档编入索引

{
  "myObj":{
     "name": "test",
     "elements": {
        "val": 1
     }
  }
}

我想进行部分更新以清空嵌套属性elements,所以我应该是elements": {};因此,我尝试发送部分更新:

POST /entities/_doc/1/_update

{
   "doc" : {
      "myObj":{
         "elements": {}  
      }
   }
}

但这不会执行任何操作,并且文档保持不变。如何使用部分更新清空文档中的嵌套对象?

2 个答案:

答案 0 :(得分:0)

您只需将值设置为null即可完全清空对象。

POST /entities/_doc/1/_update
{
   "doc" : {
      "myObj":{
         "elements": null  
      }
   }
}

答案 1 :(得分:0)

我建议像这样进行脚本更新,它将起作用:

POST entities/_doc/1/_update
{
   "script" : {
      "source": """
         ctx._source.myObj.elements.clear(); 
         ctx._source.myObj.name = params.name;
      """,
      "params": {
        "name": "newTest"
      }
   }
}