Обновление всех документов в индексе означает, что все документы будут удалены, а новые будут проиндексированы. Это означает много документов "marked-as-deleted".
При запуске запроса ES автоматически отфильтровывает те документы с помеченными как удаленные, что повлияет на время отклика запроса. Какое влияние это зависит от данных, использования и запроса.
Кроме того, если вы обновите все документы, если вы не запустите _force_merge
, будут сегменты (особенно более крупные), которые будут по-прежнему иметь документы с «отмеченными как удаленные», и эти сегменты трудно скомпилировать Lucene/Elasticsearch.
Мое предложение, если ваш процесс индексирования не слишком сложный (например, получение данных из реляционной базы данных и обработка его перед индексированием в ES, например), это полностью отказаться от индекса и индексировать свежие данные. Это может быть более эффективным, чем обновление всех документов.
Этот ответ должен помочь: http://stackoverflow.com/questions/38636348/find-and-replace-in-elasticsearch-all-documents/38636633#38636633 Если вы используете ES 1.3.2, вам необходимо заранее установите плагин [update-by-query] (https://github.com/yakaz/elasticsearch-action-updatebyquery) и перезапустите кластер – Val
val. В приведенной выше ссылке они заменяют имя. Здесь мне нужно добавить дополнительное поле («status»: «done») во все мое внешнее, для этого мне нужно сделать. – venkat
Вы можете сделать много изменений в скрипте, например, добавить новое поле, изменить существующий и удалить существующий. – Val