c# - 对弹性搜索结果的并发请求 null
问题描述
我正在尝试使用 C# Nest 更新弹性搜索中的文档。我有 Azure 服务总线触发功能,它提供要更新的数据。以下是我为更新文档而执行的步骤。
- 通过 ID 从 Elastic Search 索引中获取记录
- 进行更改
- 按 ID 更新记录
如果我使用单个消息进行测试,则逻辑工作正常。在并发请求的情况下,弹性搜索正在重新调整空响应。
下面是 servicebus 消息和 Nest 逻辑的详细信息。
信息 :
ID 数据待更新 12345678 XXXXXXXXXXXXXXXX
商业逻辑 :
public async Task Update(string message)
{
var obj = JsonConvert.DeserializeObject<Model>(topicMessage.Record);
SearchResponse searchResponse = null;
var esResult = await _elasticClient.GetAsync<SearchResponse>(obj.Id);
searchResponse = esResult?.Source;
if (searchResponse != null)
{
// Update logic which is working fine
}
else
{
throw new Exception($"Record with id:{obj.Id} not found in ES");
}
}
如果我一次处理 10000 条记录,那么大约有 500 到 1000 条记录返回 null(即使带有 Id 的记录也存在于 ES 索引上)。
我需要一些帮助来处理具有快速处理和更少故障的并发请求。
注意:任何消息中的 Id 都不为 null 或为空。
解决方案
推荐阅读
- python - python线程中的线程太多 - 递归遍历
- c# - 如何将 ulong 路由到 ASP.NET 页面
- python - 从 curl 转换为 python request.post
- uwp - Windows IOT 核心将接收数据发送到“umwatson.trafficmanager.net”
- r - seq 日期向量的类型为 double 但显示为字符
- javascript - 如何使用设置间隔增加对象键值
- javascript - axios在等待响应时是否使用cpu?
- javascript - 是否可以通过单击 Electron 的 MenuItem 类型复选框不关闭当前子菜单?
- python - Python如何中断当前方法来执行另一个方法[关闭]
- arrays - 给定一组数组,找出哪些数组是另一个数组的子集