добавить новое поле в существующие документы путем обновления вasticsearch - PullRequest
0 голосов
/ 22 октября 2019

У меня есть index с определенными свойствами, но в документах отсутствует одно свойство при импорте из другого эластичного поиска.

Скажем, в индексе свойства сопоставления:

"properties": { 
    "name": {"type" : ..},
    "address": {"type" : ..},
    "email": {"type" : ..}
}

Но в документах одно из свойств говорит, что email отсутствует как:

{
    "name": "Wheeler Walker",
    "address": "Texas",
},
{
    "name": "Kenny Rogers",
    "address": "Virginia",
}

У меня уже есть свойство email, определенное в mapping.

Теперь мне просто нужномассово обновите эти документы, чтобы свойство email имело "" пустое значение.

Как это можно сделать?

1 Ответ

2 голосов
/ 22 октября 2019

Это классический случай для updateByQuery .

Тело вашего запроса должно выглядеть примерно так:

{
   "query": {"bool": {"must_not: {"exists": {"field": "email"}}}},
   "script": 'ctx._source.email = ""'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...