我正在尝试使用nest c#重新索引2695140个文档。我需要计算一下重新索引所有文档所花的时间,我已经为这些文档编写了日志。但是在运行1分钟之后,我的代码返回了一个无效的响应(失败),但是由于我们触发了ElasticSearch的reindex endoint,文档被正确地索引了。
我希望我的代码应该等到重新索引操作完成,这样我就可以计算重新索引所花费的总时间。下面是我正在使用的代码
return await Client.ReindexOnServerAsync(selector => selector
.Source(src => src
.Index(_config.SomeIndex))
.Destination(dest => dest
.Index(newIndexName).OpType(OpType.Index))
.WaitForCompletion(true));
提前谢谢。
1条答案
按热度按时间ubbxdtey1#
我想我的代码应该等到重新索引操作完成
我不知道您使用的是哪种编程语言,但对于遵循“每个请求一个线程”模型的语言,等待重新索引操作是不明智的。操作所花费的时间将与要重新索引的文档数成比例,并且它将阻塞线程(消耗资源),直到操作完成。
相反,您应该:
在不等待完成的情况下重新编制索引,例如:
响应:将具有任务id
使用tasks api跟踪任务的完成情况。它还将包含请求是否成功的状态以及操作所花费的时间。任务api的响应示例如下所示:
您可以定期检查(使用cron/scheduler/etc)直到完成并采取所需的操作。