C# 为什么azure search在索引结果中没有失败的情况下抛出IndexBatchException
在我的微服务(负责根据事件消息将数据输入azure搜索实例)中,我正在尝试合并或上载IndexBatch。批大小始终为1,因为一条事件消息只包含一个我需要在搜索中合并或上载的实体 我一直在获取IndexBatchException,该异常不包含索引结果,其中Successed为false Azure搜索服务详细信息C# 为什么azure search在索引结果中没有失败的情况下抛出IndexBatchException,c#,azure,azure-cognitive-search,azure-search-.net-sdk,C#,Azure,Azure Cognitive Search,Azure Search .net Sdk,在我的微服务(负责根据事件消息将数据输入azure搜索实例)中,我正在尝试合并或上载IndexBatch。批大小始终为1,因为一条事件消息只包含一个我需要在搜索中合并或上载的实体 我一直在获取IndexBatchException,该异常不包含索引结果,其中Successed为false Azure搜索服务详细信息 级别:标准 分区和副本:3和3 微服务详细信息 Asp.Net核心版本:2.2 Microsoft.Azure.Search SDK版本:9.0.1 目前,我的代码已设置为通
- 级别:标准
- 分区和副本:3和3
- Asp.Net核心版本:2.2
- Microsoft.Azure.Search SDK版本:9.0.1
我希望只有在搜索加载时才会出现索引批处理异常,即使是这样,我也希望它会抛出此异常并产生一些失败的结果。服务会按预期返回索引结果,但您的代码中有一个小错误。错误的提示出现在“0”中,该“0”在“未能索引某些文档:0”中返回。如果代码按预期运行,它将是一个空字符串。您需要删除字符串上的$,该字符串将{0}作为c#表达式而不是字符串格式标记进行计算 应改为:
logger.LogError("Failed to index some of the documents: {0}", string.Join(", ", indexBatchException.IndexingResults.Where(r => !r.Succeeded).Select(r => $"{r.Key}:{r.ErrorMessage}")));
感谢Corom的反馈。在记录修复后,我们意识到错误是搜索服务在1次合并尝试后抛出的409冲突,该尝试由于并发控制而失败。重试成功,文档按预期添加到搜索中。
catch (IndexBatchException indexBatchException)
{
logger.LogError($"Failed to index some of the documents: {0}", string.Join(", ", indexBatchException.IndexingResults.Where(r => !r.Succeeded).Select(r => $"{r.Key}:{r.ErrorMessage}")));
throw;
}
logger.LogError("Failed to index some of the documents: {0}", string.Join(", ", indexBatchException.IndexingResults.Where(r => !r.Succeeded).Select(r => $"{r.Key}:{r.ErrorMessage}")));