You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Search批量数据索引报错,需避免索引器因错误中断

Azure Search索引器遇错持续运行的解决方案

问题分析

你已设置MaxFailedItems和MaxFailedItemsPerBatch为-1,但索引器仍因“无法从文档中提取内容或元数据”错误停止,原因是这类提取错误默认被索引器判定为致命级错误,仅靠失败项数量配置无法覆盖。

具体解决步骤

1. 确认配置生效

先验证索引器的参数是否正确同步到Azure服务:

  • 使用Azure CLI查询索引器详情:
    az search indexer show --name <你的索引器名称> --resource-group <资源组名> --service-name <搜索服务名>
    
    检查返回结果中parameters字段,确认maxFailedItems和maxFailedItemsPerBatch值为-1。

2. 添加提取容错配置(核心)

在索引器参数中显式关闭提取错误的终止触发,修改代码如下:

var indexer = new SearchIndexer(indexerName, dataSourceName, indexName)
{
    //... 其他已有配置
    Parameters = new IndexingParameters()
    {
        MaxFailedItems = -1,
        MaxFailedItemsPerBatch = -1,
        Configuration = new IndexingParametersConfiguration()
        {
            // 忽略不支持的内容类型错误
            ["failOnUnsupportedContentType"] = false,
            // 忽略无法处理的文档错误
            ["failOnUnprocessableDocument"] = false,
            // 可选:延长单文档提取超时,避免因超时终止
            ["indexingTimeout"] = "00:30:00"
        }
    },
};

3. 提前排除异常文档

如果是特定异常文档(如损坏文件、空文件)导致错误,可在数据源层面添加筛选规则:

  • 以Blob数据源为例,筛选排除空文件:
    var dataSource = new SearchIndexerDataSourceConnection(
        dataSourceName,
        SearchIndexerDataSourceType.AzureBlob,
        connectionString,
        new AzureBlobStorageDataSourceContainer("你的容器名")
        {
            Query = "BlobLength gt 0"
        });
    

4. 启用错误日志

在Azure门户的搜索服务中,进入目标索引器的「诊断设置」,将错误日志转发到Log Analytics或存储账户,方便后续排查具体失败文档,同时不影响索引器运行。

验证方式

更新配置后手动触发索引运行,观察索引器是否持续处理后续文档,同时通过日志确认失败文档仅被记录未终止流程。

内容的提问来源于stack exchange,提问作者Ch Ishani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:32:44