Как правило, вы можете использовать массовый API для таких массовых обновлений. Вы можете либо снова проиндексировать данные, используя тот же идентификатор, либо просто запустить обновление. Вы можете использовать CURL для вывода sh обновлений из командной строки, если вы делаете это как одноразовое обновление.
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
Другой вариант - использовать update_by_query, если вы настраиваете настраиваемые поля. При обновлении по запросу вы также можете смешивать его с конвейером для обновления существующих данных.
Все зависит от того, пытаетесь ли вы запустить обновление, используя информацию из другого индекса (в этом случае вы можете использовать процессор обогащения, который доступен в версии 7.5 и выше) ИЛИ, если вы просто хотите добавить новое поле и обновите его, используя какое-то правило, которое уже использует атрибуты, доступные в документе.
Так что для разных типов сценариев доступны разные варианты. Массовое API является более подходящим, когда источник данных является внешним. Но если данные уже доступны в Elasticsearch, тогда обновление по запросу подходит.
Вы также можете посмотреть на переиндексацию с помощью конвейерного скриптинга. Но опять же, правило о лошадях на курсах применимо и здесь.