2016-08-19 2 views
-1

Есть ли способ обновить все данные в elasticsearch.Обновление всех данных elasticsearch

В приведенном ниже примере обновление выполнено для внешнего «1».

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d ' 
{ 
"doc": { "name": "Jane Doe", "age": 20 } 
}' 

Аналогичным образом, мне необходимо обновить все мои данные во внешнем. Есть ли способ или запрос на обновление всех данных.

+0

Этот ответ должен помочь: 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

+0

val. В приведенной выше ссылке они заменяют имя. Здесь мне нужно добавить дополнительное поле («status»: «done») во все мое внешнее, для этого мне нужно сделать. – venkat

+0

Вы можете сделать много изменений в скрипте, например, добавить новое поле, изменить существующий и удалить существующий. – Val

ответ

1

Обновление всех документов в индексе означает, что все документы будут удалены, а новые будут проиндексированы. Это означает много документов "marked-as-deleted".

При запуске запроса ES автоматически отфильтровывает те документы с помеченными как удаленные, что повлияет на время отклика запроса. Какое влияние это зависит от данных, использования и запроса.

Кроме того, если вы обновите все документы, если вы не запустите _force_merge, будут сегменты (особенно более крупные), которые будут по-прежнему иметь документы с «отмеченными как удаленные», и эти сегменты трудно скомпилировать Lucene/Elasticsearch.

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

+0

Но у меня много данных, мне нужно их обновить. Есть ли способ или возможности объединиться или обновиться, не вызывая. – venkat

+0

Вы можете обновить их все, но в конце у вас не будет индекса, подобного тому, который был после нового реиндекса. У вас будет указатель с некоторыми документами с «отмеченными как удаленные». И вам нужно запустить [принудительное слияние] (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html). Вы все равно можете обновить все документы, а не принудительно слить, но ** возможно ** повлиять на производительность во время запроса из-за существующих документов с помеченными как удаленные. –

Смежные вопросы