如何等待 elasticsearch helpers.reindex 在 Python 完成?

How to wait for elasticsearch helpers.reindex to finish in Python?

我正在重新索引一个大索引,需要删除旧索引以便为新索引添加别名。

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条命令需要等待重建索引完成,否则会删除原来的索引而无法工作。

我看到 elasticsearch 有 refresh=wait_for 但 python helpers.reindex.

什么方法可以使重建索引同步?

尝试将此 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} )

未测试。

  1. 作为文档统计信息,helpers.reindex 已弃用,首选主要 API reindex。

  2. reindex 方法包含 wait_for_completion 参数,默认情况下为 true,因此默认情况下 Elasticsearch().reindex(...) 是同步的。