Массовое удаление атрибута из документа в 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 будет использоваться, если вы хотите заменить целые документы (обновление) на новую информацию.