你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

排查 Azure AI 搜索中的常见索引器错误和警告

注意

Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。

本文提供有关在 Azure AI 搜索中索引编制和 AI 扩充期间可能会遇到的常见错误和警告的信息和解决方案。

当错误计数超过 maxFailedItems 时,索引停止。 若要让索引器跳过失败的文档,请配置 maxFailedItemsandmaxFailedItemsPerBatch。

注意

每个失败的文档及其文档键(如果可用)在索引器执行状态中显示为错误。 如果将索引器配置为容忍失败,则可以使用 Documents - Index 稍后上传文档。

警告不会停止索引,但它们确实指示可能导致意外结果的条件。 是否采取措施取决于数据和您的具体情况。

在哪里可以找到特定的索引器错误?

验证索引器状态并识别错误:

  1. 请在 Azure 门户中打开您的搜索服务。

  2. 在左侧,展开 “搜索管理>索引器 ”并选择一个索引器。

  3. 在 “执行历史记录”下,选择状态。 所有状态(包括 Success)都有有关执行的详细信息。

  4. 如果出现错误,请将鼠标悬停在错误消息上。 屏幕右侧会显示一个窗格,其中显示了有关错误的详细信息。

暂时性错误

由于各种原因(例如暂时性网络通信中断、长时间运行的进程超时或特定文档细微差别),在索引器运行期间经常遇到暂时性错误或警告。 但是,这些错误是临时的,应在后续索引器运行中解决。

为了有效管理这些错误,我们建议将 索引器按计划运行,例如,每隔五分钟运行一次,下一次运行将在完成第一次运行后五分钟开始,并遵循服务 的最大运行时限制 。 定期计划的运行有助于纠正暂时性错误或警告。

如果错误在多个索引器运行时持续存在,可能并不是暂时性问题。 在这种情况下,请参阅下面的列表了解潜在的解决方案。

错误属性

财产 描述 例子
关键 受错误或警告影响的文档的 ID。 Azure 存储示例,其中默认 ID 是元数据存储路径: https://<storageaccount>.blob.core.windows.net/jfk-1k/docid-32112954.pdf
名字 导致错误或警告的操作。 这由以下结构生成: [category].[subcategory].[resourceType]。[resourceName] DocumentExtraction.azureblob.myBlobContainerName Enrichment.WebApiSkill.mySkillName Projection.SearchIndex.OutputFieldMapping.myOutputFieldName Projection.SearchIndex.MergeOrUpload.myIndexName Projection.KnowledgeStore.Table.myTableName
消息 错误或警告的概要说明。 Could not execute skill because the Web Api request failed.
细节 有助于诊断问题的具体信息可能包括在执行自定义技能失败时的 WebApi 响应等。 link-cryptonyms-list - Error processing the request record : System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.All[TSource](IEnumerable 1 source, Func 2 predicate) at Microsoft.CognitiveSearch.WebApiSkills.JfkWebApiSkills. ...rest of stack trace...
DocumentationLink 指向相关文档的链接,其中包含调试和解决问题的详细信息。 此链接通常指向此页上的以下部分之一。 https://go.microsoft.com/fwlink/?linkid=2106475

Error: Could not read document

索引器无法从数据源读取文档。 这可能是由于:

原因 详细信息/示例 分辨率
不同文档中的字段类型不一致 Type of value has a mismatch with column type. Couldn't store '{47.6,-122.1}' in authors column. Expected type is JArray. Error converting data type nvarchar to float. Conversion failed when converting the nvarchar value '12 months' to data type int. Arithmetic overflow error converting expression to data type int. 确保每个字段的类型在不同的文档中相同。 例如,如果第一个文档 'startTime' 字段是 DateTime,而在第二个文档中是字符串,就会出现错误。
来自数据源的基础服务的错误 从 Azure Cosmos DB: {"Errors":["Request rate is large"]} 检查存储实例以确保它正常运行。 可能需要调整缩放或分区。
暂时性问题 A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host 偶尔会出现意外的连接问题。 请稍后再次尝试通过索引器运行文档。

Error: Could not extract content or metadata from your document

具有 Blob 数据源的索引器无法从文档中提取内容或元数据(例如 PDF 文件)。 这可能是由于:

原因 详细信息/示例 分辨率
Blob 超出大小限制 Document is '150441598' bytes, which exceeds the maximum size '134217728' bytes for document extraction for your current service tier. Blob 索引错误
Blob 的内容类型不受支持 Document has unsupported content type 'image/png' Blob 索引错误
Blob 已加密 Document could not be processed - it may be encrypted or password protected. 可以使用 Blob 设置跳过 Blob。
暂时性问题 Error processing blob: The request was aborted: The request was canceled. Document timed out during processing. 偶尔会出现意外的连接问题。 请稍后再次尝试通过索引器运行文档。

Error: Could not parse document

索引器从数据源读取文档,但将文档内容转换为指定的字段映射架构时出现问题。 这可能是由于:

原因 详细信息/示例 分辨率
缺少文档密钥 Document key cannot be missing or empty 确保所有文档都具有有效的文档密钥。 文档键是通过将“key”属性设置为 索引定义的一部分来确定的。 当在特定文档中找不到标记为“key”的属性时,索引器将发出此错误。
文档密钥无效 Invalid document key. Keys can only contain letters, digits, underscore (_), dash (-), or equal sign (=). 确保所有文档都具有有效的文档密钥。 有关更多详细信息,请查看为 Blob 存储编制索引。 如果使用 Blob 索引器,并且文档键为 metadata_storage_path 字段,请确保索引器定义具有 base64Encode 映射函数,其中 parameters 等于 null,而不是纯文本格式的路径。
文档密钥无效 Document key cannot be longer than 1024 characters 修改文档密钥以满足验证要求。
无法将字段映射应用于指定字段 Could not apply mapping function 'functionName' to field 'fieldName'. Array cannot be null. Parameter name: bytes 仔细检查索引器上定义的 字段映射 ,并与失败文档的指定字段的数据进行比较。 可能需要修改字段映射或文档数据。
无法读取字段值 Could not read the value of column 'fieldName' at index 'fieldIndex'. A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) 这些错误通常是由于数据源的基础服务出现意外的连接问题导致的。 请稍后再次尝试通过索引器运行文档。

Error: Could not map output field 'xyz' to search index due to deserialization problem while applying mapping function 'abc'

输出映射可能已失败,因为您使用的映射函数不适合输出数据的格式。 例如,对 Base64Encode 二进制数据应用映射函数将生成此错误。 若要解决此问题,请在不指定映射函数的情况下重新运行索引器,或确保映射函数与输出字段数据类型兼容。 有关详细信息,请参阅 输出字段映射 。

Error: Could not execute skill

索引器无法运行技能集中的某个技能。

原因 详细信息/示例 分辨率
暂时性连接问题 发生暂时性错误。 请稍后再试。 偶尔会出现意外的连接问题。 请稍后再次尝试通过索引器运行文档。
潜在的产品错误 发生意外错误。 这表示一种未知类型的故障,可以指示产品中的一个错误。 提交 客服工单 以获取帮助。
技能在执行过程中遇到错误 (来源于合并技能)一个或多个偏移值无效,无法解析。 项目被插入到文本末尾 使用错误消息中的信息修复问题。 此类失败需要操作才能解决。

Error: Could not execute skill because the Web API request failed

技能执行失败,因为对 Web API 的调用失败。 通常,使用自定义技能时会发生此类故障,在这种情况下,需要调试自定义代码来解决该问题。 如果失败来源于某个内置技能,请参考错误消息以获得解决问题的帮助。

调试此问题时,请务必留意有关此技能的任何技能输入警告。 您的 Web API 端点可能会出错,因为索引器传递了意料之外的输入。

Error: Could not execute skill because Web API skill response is invalid

技能执行失败,因为对 Web API 的调用返回了无效的响应。 通常,使用自定义技能时会发生此类故障,在这种情况下,需要调试自定义代码来解决该问题。 如果问题出在内置技能上,请提交支持请求来获取帮助。

Error: Type of value has a mismatch with column type. Couldn't store in 'xyz' column. Expected type is 'abc'

如果数据源具有与尝试在索引中映射的字段不同的数据类型的字段,则可能会遇到此错误。 检查数据源字段数据类型,并确保它们 正确映射到索引数据类型。

Error: Skill did not execute within the time limit

在以下两种情况下,可能会遇到此错误消息,每个错误消息应以不同的方式处理。 根据返回此错误的技能,按照以下说明操作。

内置 Foundry Tools 功能

许多内置认知技能(如语言检测、实体识别或 OCR)都由 Foundry 工具 API 终结点提供支持。 有时,这些终结点会出现暂时性问题,导致请求超时。对于这种情况,除了等待并重试之外,没有其他补救措施。 作为缓解措施,请考虑将索引器设置为 按计划运行。 计划的索引编制将从中断的位置继续。 假设暂时性问题得到解决,索引编制和认知技能处理应能够在下一次计划的运行中继续。

如果在同一文档中持续遇到内置认知技能的错误,请提交 技术支持请求 以获取帮助,因为这种情况不符合预期。

自定义技能

如果创建的自定义技能出现超时错误,可以尝试多种解决方法。 首先,查看你的自定义技能,并确保它不会陷入无限循环,并且它一致地返回结果。 在您确认结果已返回后,请检查执行时间的长短。 如果未在自定义技能定义上显式设置 timeout 值,则默认值 timeout 为 30 秒。 如果 30 秒不足以执行技能,则可以在自定义技能定义上指定更高的 timeout 值。 下面是自定义技能定义的示例,其中超时设置为 90 秒:

  {
        "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
        "uri": "<your custom skill uri>",
        "batchSize": 1,
        "timeout": "PT90S",
        "context": "/document",
        "inputs": [
          {
            "name": "input",
            "source": "/document/content"
          }
        ],
        "outputs": [
          {
            "name": "output",
            "targetName": "output"
          }
        ]
      }

可以为参数设置 timeout 的最大值为 230 秒。 如果自定义技能无法在 230 秒内一致执行,则可以考虑减少 batchSize 自定义技能,以便单个执行中处理的文档更少。 如果已将技能 batchSize 设置为 1,则需要重写技能才能在 230 秒内执行,否则将其拆分为多个自定义技能,以便任何单个自定义技能的执行时间最多为 230 秒。 有关详细信息,请查看 自定义技能文档 。

Error: Could not 'MergeOrUpload' | 'Delete' document to the search index

文档已读取和处理,但索引器无法将其添加到搜索索引。 这可能是由于:

原因 详细信息/示例 分辨率
某个字段包含太大的字词 文档中的术语大于 32 KB 限制 可以通过确保字段未配置为可筛选、可分面或可排序来避免此限制。
文档太大,无法编制索引 文档大于 最大 API 请求大小 如何为大型数据集编制索引
文档包含集合中的对象过多 文档中的集合超过了 所有复杂集合限制中的最大元素数。 The document with key '1000052' has '4303' objects in collections (JSON arrays). At most '3000' objects are allowed to be in collections across the entire document. Remove objects from collections and try indexing the document again. 建议将文档中复杂集合的大小减小到低于限制,并避免存储使用率高。
连接到目标索引时出现问题(重试后仍然存在),因为服务在其他负载下(例如查询或索引)。 未能建立与更新索引的连接。 搜索服务负载过大。 纵向扩展搜索服务
正在为搜索服务打补丁以进行服务更新,或处于拓扑重新配置中。 未能建立与更新索引的连接。 搜索服务当前处于关闭状态/搜索服务正在进行转换。 为每个 SLA 文档配置至少三个副本的服务,以实现 99.9% 可用性
基础计算/网络资源中的故障(很少见) 未能建立与更新索引的连接。 发生未知故障。 将索引器配置为按计划运行,以便从失败状态恢复。
由于出现网络问题,在超时期限内未确认对目标索引发出的索引编制请求。 无法及时建立与搜索索引的连接。 将索引器配置为按计划运行,以便从失败状态恢复。 此外,如果此错误条件仍然存在,请尝试降低索引器 批大小 。

Error: Could not index document because some of the document's data was not valid

文档由索引器读取和处理,但由于索引字段的配置与索引器提取和处理的数据不匹配,因此无法将其添加到搜索索引。 这可能是由于:

原因 详细信息/示例
索引器提取的一个或多个字段的数据类型与相应目标索引字段的数据模型不兼容。 The data field '_data_' in the document with key '888' has an invalid value 'of type 'Edm.String''. The expected type was 'Collection(Edm.String)'.
无法从字符串值中提取任何 JSON 实体。 Could not parse value 'of type 'Edm.String'' of field '_data_' as a JSON object. Error:'After parsing a value an unexpected character was encountered: ''. Path '_path_', line 1, position 3162.'
无法从字符串值中提取 JSON 实体的集合。 Could not parse value 'of type 'Edm.String'' of field '_data_' as a JSON array. Error:'After parsing a value an unexpected character was encountered: ''. Path '[0]', line 1, position 27.'
源文档中发现了未知类型。 Unknown type '_unknown_' cannot be indexed
源文档中使用了地理点不兼容的表示法。 WKT POINT string literals are not supported. Use GeoJson point literals instead

在所有这些情况下,请参阅索引器 支持的数据类型 和 数据类型映射 ,以确保正确生成索引架构并设置适当的 索引器字段映射。 错误消息包含可帮助跟踪不匹配源的详细信息。

Error: Integrated change tracking policy cannot be used because table has a composite primary key

这适用于 SQL 表,通常发生在键定义为复合键的时候,或当表定义了一个唯一聚集索引(在此指 SQL 索引,而非 Azure 搜索索引)的时候。 主要原因是将键属性修改为 唯一聚集索引中的复合主键。 在这种情况下,请确保 SQL 表没有唯一的聚集索引,或者将键字段映射到保证不具有重复值的字段。

Error: Could not process document within indexer max run time

当索引器无法在允许的执行时间内完成从数据源处理单个文档时,会发生此错误。 使用技能集时,最长运行时间较短。 发生此错误时,如果 maxFailedItems 设置为非 0 值,则索引器将在以后的运行中绕过该文档,使索引编制能够继续。 如果不能错过任何文档,或者反复出现此错误,请考虑将文档划分为更小的部分,以便在单次索引器执行中取得部分进展。

Error: Could not project document

当索引器尝试将数据 投影到知识存储 并且尝试失败时,会发生此错误。 此故障可以一致且可修复,也可能是投影输出接收器的暂时性故障,可能需要等待并重试才能解决。 下面是一组已知的故障状态和可能的解决方法。

原因 详细信息/示例 分辨率
无法在容器 'blobUri' 中更新投影 Blob 'containerName' 指定的容器不存在。 索引器检查指定的容器是否已创建,并在必要时创建它,但每次运行索引器时,它只执行此检查一次。 此错误意味着在此步骤之后容器被删除了。 若要解决此错误,请尝试此操作:仅保留存储帐户信息,等待索引器完成,然后重新运行索引器。
无法在容器 'blobUri' 中更新投影 Blob 'containerName' 无法将数据写入传输连接:远程主机强行关闭了现有连接。 这应是 Azure 存储的暂时性故障,因此应通过重新运行索引器来解决。 如果您持续遇到此错误,请提交 服务单 ,以便进一步调查问题。
无法更新表'projectionRow'中的行'tableName' 服务器正忙。 这应是 Azure 存储的暂时性故障,因此应通过重新运行索引器来解决。 如果您持续遇到此错误,请提交 服务单 ,以便进一步调查问题。

Error: The cognitive service for skill '<skill-name>' has been throttled

技能执行失败,因为对 Foundry 工具的调用受到限制。 通常,当并行执行过多技能时,会发生此类故障。 如果您使用 Microsoft.Search.Documents 客户端库执行索引器,您可以使用 SearchIndexingBufferedSender 来自动尝试重试失败的步骤。 否则,可以 重置并重新运行索引器。

Error: Expected IndexAction metadata

“预期的 IndexAction 元数据”错误意味着当索引器尝试读取文档以识别应执行的操作时,它找不到文档上的任何相应元数据。 通常,当索引器添加或删除批注缓存而不重置索引器时,会发生此错误。 若要解决此问题,应 重置并重新运行索引器。

Warning: Skill input was invalid

技能的某个输入缺失、类型不正确,或以其他方式无效。 你可能会看到以下信息:

  • Could not execute skill

  • Skill executed but may have unexpected results

认知技能具有所需的输入和可选输入。 例如, 关键短语提取技能 有两个必需的输入 text, languageCode并且没有可选的输入。 自定义技能输入都被视为可选输入。

如果缺少必要的输入,或者输入不是正确的类型,技能会被跳过并发出警告。 跳过的技能不会生成输出。 如果下游技能使用跳过技能的输出,则它们可能会生成其他警告。

如果缺少可选输入,技能仍会运行,但由于缺少输入,它可能会生成意外的输出。

在这两种情况下,此警告都是由于数据的形状造成的。 例如,如果你有一个文档,其中包含关于具有字段firstName、middleName和lastName的人员的信息,你可能会有一些文档没有middleName的条目。 如果在管道中将 middleName 作为输入传递给技能,则预期此项技术输入有时会缺失。 你需要评估数据和方案,以确定是否由于此警告而需要执行任何操作。

如果要为缺少的输入提供默认值,可以使用 条件技能 生成默认值,然后使用 条件技能 的输出作为技能输入。

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == null" },
        { "name": "whenTrue", "source": "= 'en'" },
        { "name": "whenFalse", "source": "= $(/document/language)" }
    ],
    "outputs": [ { "name": "output", "targetName": "languageWithDefault" } ]
}
原因 详细信息/示例 分辨率
输入的技能类型错误 “所需的技能输入不是预期的类型 String。 名称: text,来源: /document/merged_content.”“所需的技能输入不是预期的格式。 名称:text,来源:/document/merged_content。无法遍历非数组/document/normalized_images/0/imageCelebrities/0/detail/celebrities。无法在非数组0中选择/document/normalized_images/0/imageCelebrities/0/detail/celebrities。 某些技能需要特定类型的输入,例如 情绪技能 预期 text 为字符串。 如果输入指定了非字符串值,则技能不会执行,并且不生成任何输出。 确保数据集具有类型统一的输入值,或使用 自定义 Web API 技能 预处理输入。 如果在技能中迭代某个数组,请检查技能上下文和输入是否在正确的位置包含 *。 通常,上下文和输入源应以数组结尾 * 。
缺少技能输入 Required skill input is missing. Name: text, Source: /document/merged_content Missing value /document/normalized_images/0/imageTags. Unable to select 0 in array /document/pages of length 0. 如果针对所有文档发生此警告,则输入路径中可能存在拼写错误。 检查属性名称大小写。 检查路径中是否有多余或缺失的 *。 验证数据源中的文档是否提供所需的输入。
技能语言代码输入无效 技能输入 languageCode 具有以下语言代码,其中至少一个语言代码 X,Y,Z无效。 请参阅下面的更多详细信息。

Warning: Skill input 'languageCode' has the following language codes 'X,Y,Z', at least one of which is invalid.

不支持传入到下游技能的可选 languageCode 输入的一个或多个值。 如果将 LanguageDetectionSkill 的输出传递到后续技能,并且输出包含的语言比这些下游技能支持的语言多,则可能会出现这种情况。

请注意,如果向 LanguageDetectionSkill 传递无效 countryHint 输入,则还可以收到类似于此警告的警告。 如果发生这种情况,请验证你用于该输入的数据源中的字段是否包含有效的 ISO 3166-1 alpha-2 两个字母国家/地区代码。 如果有些是有效的而有些是无效的,请继续遵循以下指南,但将languageCode替换为countryHint,defaultLanguageCode替换为defaultCountryHint以配合您的使用案例。

如果知道数据集全部采用一种语言,则应删除 LanguageDetectionSkill 和 languageCode 技能输入,并 defaultLanguageCode 改用该技能的技能参数,假设该技能支持该语言。

由于数据集包含多种语言,因此需要LanguageDetectionSkill和languageCode 输入,请考虑添加ConditionalSkill以筛选出不支持的语言文本,再将筛选后的文本传递给下游技能。 下面是一个关于实体识别功能 (EntityRecognitionSkill) 的示例:

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == 'de' || $(/document/language) == 'en' || $(/document/language) == 'es' || $(/document/language) == 'fr' || $(/document/language) == 'it'" },
        { "name": "whenTrue", "source": "/document/content" },
        { "name": "whenFalse", "source": "= null" }
    ],
    "outputs": [ { "name": "output", "targetName": "supportedByEntityRecognitionSkill" } ]
}

下面是可用于生成此错误消息的每个技能当前支持的语言的一些参考:

Warning: Skill input was truncated

认知技能限制一次可以分析的文本长度。 如果文本输入超出限制,则会在扩充文本之前截断文本。 技能执行,但不会对所有数据执行。

在下面的 LanguageDetectionSkill 示例中,如果输入超出字符限制,'text' 输入字段可能会触发此警告。 可以在 技能参考文档中找到输入限制。

 {
    "@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
    "inputs": [
      {
        "name": "text",
        "source": "/document/text"
      }
    ],
    "outputs": [...]
  }

如果要确保分析所有文本,请考虑使用 拆分技能。

Warning: Web API skill response contains warnings

索引器在技能集中运行技能,但来自 Web API 请求的响应指示存在警告。 查看警告,了解数据受到的影响以及是否需要进一步操作。

Warning: The current indexer configuration does not support incremental progress

此警告仅适用于 Azure Cosmos DB 数据源。

索引编制期间的增量进度可确保如果索引器执行因暂时性故障或执行时间限制而中断,索引器可以在下次运行时从头开始恢复整个集合的中断位置,而无需从头开始重新编制索引。 为大型集合编制索引时,这一点尤其重要。

恢复未完成的索引作业的功能取决于文档是否已按_ts列排序。 索引器使用时间戳来确定下一步要选取的文档。 _ts如果列缺失,或者索引器无法确定自定义查询是否按它排序,索引器将从头开始,你将看到此警告。

可以通过使用assumeOrderByHighWaterMarkColumn 配置属性覆盖此行为,从而启用增量进度并禁止显示此警告。

有关详细信息,请参阅 增量进度和自定义查询。

Warning: Some data was lost during projection. Row 'X' in table 'Y' has string property 'Z' which was too long.

表存储服务对实体属性的大小有限制。 字符串可以包含 32,000 个字符或更少。 如果投影的字符串属性超过 32,000 个字符的行,则只保留前 32,000 个字符。 若要解决此问题,请避免投影其字符串属性超过 32,000 个字符的行。

Warning: Truncated extracted text to X characters

索引器限制可从任意一个文档中提取多少文本。 此限制取决于定价层:免费层为 32,000 个字符,基本层为 64,000 个字符,标准 S2 为 400 万个字符,标准 S2 为 800 万个字符,标准 S3 为 1600 万个字符。 截断的文本不会编制索引。 若要避免出现此警告,请尝试将包含大量文本的文档拆分为多个较小的文档。

有关详细信息,请参阅 索引器限制。

Warning: Could not map output field 'X' to search index

引用不存在/null 数据的输出字段映射将为每个文档生成警告,并生成空索引字段。 若要解决此问题,请仔细检查输出字段映射源路径是否存在可能的拼写错误,或使用 条件技能设置默认值。 有关详细信息,请参阅 输出字段映射 。

原因 详细信息/示例 分辨率
无法迭代非数组 “无法循环访问非数组 /document/normalized_images/0/imageCelebrities/0/detail/celebrities。” 当输出不是数组时,会发生此错误。 如果认为输出应该是数组,请检查指示的输出源字段路径是否存在错误。 例如,源字段名称中可能会有缺少或多余的 *。 此技能的输入也可能为 null,从而导致产生空数组。 在 “技能输入无效” 部分中查找类似的详细信息。
无法选择 0,因为它不是数组 无法在非数组 0 中选择 /document/pages。 如果技能输出未生成数组,并且输出源字段名称的路径中包含数组索引或*,则可能会出现这种情况。 请仔细检查输出源字段名称中提供的路径以及指示的字段名称的字段值。 在 “技能输入无效” 部分中查找类似的详细信息。

Warning: The data change detection policy is configured to use key column 'X'

数据更改检测策略 对用于检测更改的列具有特定要求。 其中一项要求是每次更改源项时都会更新此列。 另一个要求是,此列的新值大于以前的值。 键列不满足此要求,因为它们不会在每次更新时更改。 解决此问题的方法是为变更检测策略选择一个不同的列。

Warning: Document text appears to be UTF-16 encoded, but is missing a byte order mark

索引器分析模式需要知道文本在分析之前如何编码。 编码文本的两种最常见方法是 UTF-16 和 UTF-8。 UTF-8 是可变长度编码,其中每个字符长度介于 1 字节和 4 字节之间。 UTF-16 是固定长度编码,其中每个字符长度为 2 字节。 UTF-16 具有两个不同的变体, big endian 以及 little endian。 文本编码由文本之前的一 byte order mark系列字节确定。

编码 字节顺序标记
UTF-16 Big Endian 0xFE 0xFF
UTF-16 Little Endian 0xFF 0xFE
UTF-8 0xEF 0xBB 0xBF

如果没有字节顺序标记,则假定文本编码为 UTF-8。

若要解决此警告,请确定此 Blob 的文本编码是什么,并添加相应的字节顺序标记。

Warning: Azure Cosmos DB collection 'X' has a Lazy indexing policy. Some data may be lost

无法一致地查询具有 延迟 索引策略的集合,从而导致索引器缺少数据。 若要解决此警告,请将索引策略更改为“一致”。

Warning: The document contains very long words (longer than 64 characters). These words may result in truncated and/or unreliable model predictions.

此警告是从 Foundry 工具的语言服务传递的。 在某些情况下,可以放心地忽略此警告,例如,如果长字符串只是一个长 URL。 请注意,当单词超过 64 个字符时,它将被截断为 64 个字符,这可能会影响模型预测。

Error: Cannot write more bytes to the buffer than the configured maximum buffer size

索引器具有 文档大小限制。 确保您的数据源中的文档小于您服务等级支持的大小限制。

Error: Failed to compare value 'X' of type M to value 'Y' of type N.

此错误通常发生在 Azure SQL 索引器中,当用于 dataChangeDetectionPolicy 的源列类型与索引器预期的不匹配时,尤其是在 convertHighWaterMarkToRowVersion 启用时。

例如,如果用于更改检测的列的类型为 datetime,但索引器需要 rowversion 类型,因为 convertHighWaterMarkToRowVersion 已启用,那么不匹配可能会导致错误。

检查源中“高水印”列的数据类型,并相应地更新索引器配置。 验证并更新后,重置并重新运行索引器以处理列值。

Error: Access denied to Virtual Network/Firewall rules

此错误通常由以下任一原因导致:

通过查看资源配置以确认它们允许流量流向所有必需服务,确保索引器可以访问您的设置组件:

Error: Credentials provided in the connection string are invalid or have expired

当 Azure AI 搜索索引器无法使用提供的连接字符串进行身份验证,或者访问存储帐户以验证凭据时,会出现此错误。

可能的原因 详细信息/示例 分辨率
已过期或轮换密钥 连接字符串包含不再有效的过时密钥。 转到要联系的资源(例如 Azure 存储或 Azure SQL),并使用基于密钥的身份验证复制最新的访问密钥,然后相应地更新数据源或连接字符串。
未启用托管标识或未授予访问权限 AI 搜索服务 托管身份 已启用,但缺少所需的访问角色。 - 在搜索服务上启用系统或用户分配的 托管标识 。
- 在数据源所需的资源作用域内,为该标识分配适当的角色。 例如,在Azure Blob 数据源的存储帐户范围内分配Storage Blob Data Reader。 每个 数据源 都有自己的权限要求。
网络/防火墙阻止身份访问 已联系的资源配置为限制网络访问。 配置 网络设置 以允许 Azure AI 搜索访问。
密钥授权已被禁用 在源上删除了共享密钥访问权限,但搜索服务数据源配置仍使用基于密钥的身份验证。 使用 托管身份认证 并确保已实施基于角色的权限。 从 Azure 存储的角度来看,这意味着共享 密钥授权功能被阻止,无论是从存储帐户本身还是通过企业级 Azure 策略强制实施。

Error: Invalid AAD tenant

当Microsoft 365索引器中的SharePoint无法向拥有SharePoint网站的Microsoft Entra租户进行身份验证时,可能会出现此消息。 TenantId 在 SharePoint 数据源连接字符串中是可选的,但所提供的任何值都必须是该站点的 Microsoft Entra 租户 ID(GUID)。 此租户不一定是与搜索服务关联的Microsoft Entra租户。

使用以下指南解决错误:

  • 对于跨租户 SharePoint 连接,请在连接字符串中将 SharePoint 站点的 Microsoft Entra 租户 ID 作为 TenantId 包含在内。
  • 对于位于同一 Microsoft Entra 租户内的连接,请提供 SharePoint 站点的租户 ID,或者启用搜索服务的系统分配的托管标识。 省略 TenantId 时,索引器将使用与该标识关联的 Microsoft Entra 资源租户。
  • 如果显式指定的 TenantId 和资源租户都不可用,索引器将报告:Ensure service managed identity is enabled for your service, or TenantId is specified in your 连接字符串.

创建或更新数据源时,格式不正确的非 GUID 值可能会导致操作失败。 针对错误的 Microsoft Entra 租户、格式正确的 ID 可以通过数据源验证,但在索引器进行身份验证时会失败。 对于执行失败,请转到Azure门户中的搜索服务,选择“搜索管理>索引器”,选择索引器,并查看其执行历史记录和状态详细信息。

有关连接字符串格式以及如何查找 SharePoint 站点的 Microsoft Entra 租户 ID 的说明,请参阅配置 Microsoft 365 中的 SharePoint 索引器。

Error: Error detecting index schema from data source

用于配置索引器的 Azure 门户体验无法从数据源检索架构信息。 这可能是由于暂时性连接问题或网络配置限制,导致 Azure AI 搜索无法访问源。

原因 详细信息/示例 分辨率
暂时性通信问题 Failed to fetch, this could be due to transient communication errors with the source 由于临时网络中断或服务超时,可能会发生暂时性故障。 重试操作。 如果问题是暂时性的,则应在后续调用中解决。
专用终结点限制 数据源受虚拟网络或专用终结点的保护,阻止从索引器进行访问。 如果数据源位于专用终结点后面,请配置 共享专用链接 ,以便 Azure AI 搜索可以私下连接到资源。 确保已批准专用终结点连接。
防火墙规则阻止访问 数据源具有阻止来自 Azure AI 搜索的请求的防火墙规则。 更新防火墙设置以允许来自 Azure AI 搜索的入站流量。 请参阅 配置防火墙规则以允许索引器访问。 确保允许搜索服务 IP 或信任的服务例外。
网络配置不允许索引器访问 数据源配置为仅允许所选网络,而不包括 Azure AI 搜索。 验证数据源网络配置是否允许使用受支持的连接选项之一从 Azure AI 搜索进行访问:具有 IP 规则的公共终结点、共享专用链接或受信任的服务访问。