Массовое удаление атрибута из документа в ElasticSearch 6+ - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно удалить определенный атрибут из всех документов в ElasticSearch.Есть ли способ сделать это и можно ли это сделать через Bulk API.Я не могу найти API для массового удаления атрибута из ElasticSearch.

Есть ли способ добиться того же.

Образец части моего документа:

{
  "media": {
    "list1": [
      {"title":"a"}
    ],
    "list2": [
      {"title":"b"}
    ]
  }
}

Скрипт для удаления того же самого:

{
  "script": "ctx._source.remove('media.list1')",
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "media.list1"
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы хотите просто удалить поле из документа (а не удалить весь документ), вам нужно использовать безболезненный сценарий.См. Этот вопрос post как ссылку для написания скрипта для удаления поля из документа.

Чтобы обновить все документы в индексе, поместите безболезненный сценарий для удаления поля внутри Update By Query API , используя match_all в качестве «запроса» для обновления всех документов.

Вы не хотели бы использовать Bulk API для этого.Массовое API будет использоваться, если вы хотите заменить целые документы (обновление) новой информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...