Массовое удаление атрибута из документа в ElasticSearch 6+

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

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

Пример части моего документа:{"media": {"list1": [{"title": "a"}], "list2": [{"title": "b"}]}}

Сценарий для удаления того же самого:{"script": "ctx._source.remove ('media.list1')", "query": {"bool": {"must": [{"exist":{"field":"media.list1"}}]}}}

1 ответ

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

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

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

Другие вопросы по тегам