Microsoft.Azure.Search.IndexBatchException: 批处理中 1000 个索引操作中的 1 个失败

Microsoft.Azure.Search.IndexBatchException:1 of 1000 indexing actions in the batch failed

通过 ADF 将数据从 OnPremSql 数据库推送到 Azure Search Index 时出现以下错误。

 Copy activity encountered a user error at Sink side: ErrorCode=UserErrorAzuerSearchOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error happened when writing data to Azure Search Index 'coursemap'.,Source=Microsoft.DataTransfer.ClientLibrary.AzureSearch,''Type=Microsoft.Azure.Search.IndexBatchException,Message=1 of 1000 indexing actions in the batch failed. The remaining actions succeeded and modified the index. Check the IndexResponse property for the status of each index action.,Source=Microsoft.Azure.Search,'.

知道如何解决这个问题吗?

看起来您使用的是数据管理网关的旧版本 2.8,它没有显示 IndexBatchException 的所有可用详细信息。考虑更新到最新的 version 2.9。使用该版本,您将能够看到批次中每个失败文档的项目级错误。

在这种情况下,我们查看了您服务的遥测数据,错误是冲突 (409) 错误,如下所示:

Error indexing document with key '100665_1458': status 409
Error indexing document with key '100666_1255': status 409
Error indexing document with key '100665_1280': status 409 
Error indexing document with key '100669_1280': status 409
Error indexing document with key '100670_1280': status 409
Error indexing document with key '100670_1280': status 409

看起来您在一个批次中有多个具有相同文档键的文档,and/or您有多个复制活动同时将具有相同文档键的数据索引到同一索引中,并且造成这些冲突。

此外,网关的 2.9 版具有更好的重试策略,可以减少这些冲突错误的发生。