Обновление поля во всех записях в elasticsearch

Я новичок в ElasticSearch, так что это, вероятно, что-то довольно тривиальное, но я не понял ничего лучше, что извлечение всего, обработка скриптом и обновление регистров один за другим.

Я хочу сделать что-то вроде простого обновления SQL:

UPDATE RECORD SET SOMEFIELD = SOMEXPRESSION

мое намерение-заменить фактические фиктивные данные некоторыми данными, которые имеют больше смысла (поэтому выражение в основном случайным образом выбирает из пула допустимых значений).

1 ответов


есть пара открыть вопросы о возможности обновления документов по запросу.

техническая проблема заключается в том, что сегменты lucene (библиотека текстового поиска, которую elasticsearch использует под капотом) доступны только для чтения. Существующий документ нельзя изменить. Что вам нужно сделать, это удалить старую версию документа (которая, кстати, будет отмечена как удаленная только до слияния сегментов) и индексировать новую. Вот что существующее обновить api делает. Поэтому обновление по запросу может занять много времени и привести к проблемам, поэтому оно еще не выпущено. Механизм, позволяющий прерывать выполнение запросов, было бы неплохо иметь и для этого случая.

но есть обновление плагином запроса что выявляет именно эту функцию. Просто остерегайтесь потенциальных рисков, прежде чем использовать его.