首页 > 解决方案 > 弹性搜索重新索引:等待完成

问题描述

我正在尝试使用 Nest C# 重新索引 2695140 个文档。我需要计算重新索引所有文档所需的时间,为此我已经编写了日志。但是在运行 1 分钟后,我的代码返回了一个无效响应(失败),但是由于我们触发了弹性搜索的 Reindex endint,文档得到了正确的索引。

我希望我的代码应该等到重新索引操作完成,以便我可以计算重新索引所需的总时间。下面是我正在使用的代码

return await Client.ReindexOnServerAsync(selector => selector
                                .Source(src => src
                                  .Index(_config.SomeIndex))
                               .Destination(dest => dest
                                  .Index(newIndexName).OpType(OpType.Index))
                               .WaitForCompletion(true));

提前致谢。

标签: elasticsearchelasticsearch-rest-client

解决方案


除了@sahil-gupta 答案之外,请签出此选项等待完成- 启动异步任务后,您可以等待特定任务甚至所有已启动的任务使用另一个请求完成:

curl "http://127.0.0.1:9200/_tasks/?wait_for_completion=true&timeout=100s"

请注意,除了标准的超时响应(jsontimeout查询参数相关)之外,它可能最终会出现如下错误:

context deadline exceeded (Client.Timeout exceeded while awaiting headers)

因此需要通过此类请求的简单循环来处理可能的长时间任务。


推荐阅读