Пустой вложенный объект с частичным обновлением в ElasticSearch - PullRequest
0 голосов
/ 24 января 2019

У меня есть следующий документ, проиндексированный в ElasticSearch

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

Я хочу выполнить частичное обновление, чтобы очистить вложенный атрибут elements, поэтому я должен быть elements": {};Поэтому я попытался отправить частичное обновление:

POST /entities/_doc/1/_update

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

Но это ничего не дает, и документ остается нетронутым.Как очистить вложенный объект в документе с помощью частичных обновлений?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я предлагаю сделать обновление по сценарию, как это, и оно будет работать:

POST entities/_doc/1/_update
{
   "script" : {
      "source": """
         ctx._source.myObj.elements.clear(); 
         ctx._source.myObj.name = params.name;
      """,
      "params": {
        "name": "newTest"
      }
   }
}
0 голосов
/ 24 января 2019

Вы можете просто установить значение как null, чтобы полностью очистить объект.

POST /entities/_doc/1/_update
{
   "doc" : {
      "myObj":{
         "elements": null  
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...