Создать новый индекс Elasticsearch из запроса?

В SQL есть оператор INSERT INTO ... SELECT для заполнения таблицы данными из запроса. Есть ли что-нибудь подобное для Elasticsearch?

Это помешало бы мне массово удалить данные из существующего индекса с помощью запроса, о чем предупреждает официальное руководство Elasticsearch 2.1:

Не используйте удаление по запросу для очистки всех или большинства документов в индексе. Скорее создайте новый индекс и, возможно, переиндексируйте документы, которые вы хотите сохранить.

(Источник: https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html).


person utrenkner    schedule 25.01.2016    source источник


Ответы (1)


Вы можете использовать отличную утилиту от taskrabbit под названием elasticdump.

Существует множество параметров для настройки процесса импорта. В вашем случае я бы использовал параметр searchBody и сделал бы что-то вроде этого:

elasticdump \
  --input=http://HOST:9200/source_index \
  --output=http://HOST:9200/target_index \
  --bulk=true \
  --searchBody='{"query": { "match_all": {} } }'

Вы можете настроить запрос, и только соответствующие документы из source_index будут скопированы в target_index

person Val    schedule 25.01.2016