Как дождаться окончания эластичного поиска helpers.reindex в Python? - PullRequest
0 голосов
/ 03 ноября 2019

Я переиндексирую большой индекс и мне нужно удалить старый индекс, чтобы добавить псевдоним к новому индексу.

helpers.reindex(client=es, source_index=index_old, target_index=index_new, )

# those 2 need to run when reindex finishes
es.indices.delete(index=index_old)
es.indices.put_alias(index=index_new, name=index_old)

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

Я вижу, чтоasticsearch имеет refresh = wait_for, но не для python helpers.reindex.

Какой подход был бы приемлем для создания переиндексацииСинхронный

Ответы [ 2 ]

1 голос
/ 03 ноября 2019
  1. В качестве статистики документации, helpers.reindex устарел, а основной переиндекс API предпочтителен.

  2. метод переиндексации содержит wait_for_completion param, который по умолчанию имеет значение trueпо умолчанию Elasticsearch().reindex(...) является синхронным.

0 голосов
/ 03 ноября 2019

Попробуйте изменить helpers.reindex(client=es, source_index=index_old, target_index=index_new, ) на helpers.reindex(client=es, source_index=index_old, target_index=index_new, bulk_kwargs={'wait_for_completion': True} )

Не проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...