elasticsearch - 弹性搜索重新索引:等待完成
问题描述
我正在尝试使用 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));
提前致谢。
解决方案
除了@sahil-gupta 答案之外,请签出此选项等待完成- 启动异步任务后,您可以等待特定任务甚至所有已启动的任务使用另一个请求完成:
curl "http://127.0.0.1:9200/_tasks/?wait_for_completion=true&timeout=100s"
请注意,除了标准的超时响应(json
与timeout
查询参数相关)之外,它可能最终会出现如下错误:
context deadline exceeded (Client.Timeout exceeded while awaiting headers)
因此需要通过此类请求的简单循环来处理可能的长时间任务。
推荐阅读
- reactjs - react-admin 多对多与联结表
- github - 我们如何使用 GitHub Rest API 使用模板在 GitHub 中创建包含其他存储库内容的存储库
- javascript - 如何在打字稿中使用静态键和动态键定义模型
- youtube - GStreamer 和 Youtube 问题 RTMPSink 无法写入资源
- typescript - VS Code 未内联显示 Typescript 错误
- javascript - Discord.js - 日期状态
- hive - 最大分区列的 Hive 计数元素
- api - 如何记录 REST API 的使用/消耗?
- javascript - 使用 onError 渲染函数
- html - jQuery淡入然后从innerHTML淡出文本不起作用