一尘不染

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

elasticsearch

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

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

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

POST /entities/_doc/1/_update

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

但是,此操作无济于事,文档保持不变。如何使用部分更新清空文档中的嵌套对象?


阅读 437

收藏
2020-06-22

共1个答案

一尘不染

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

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