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

在 Microsoft 365 中为来自 SharePoint 的内容编制索引(预览版)

注意

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

重要

标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。 Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。

重要

这些特性和功能支持与其他Microsoft 服务和第三方服务的连接。 使用这些服务受其各自的条款的约束,可能会导致数据处理或存储超出Azure符合性边界,以及流入Azure符合性边界的数据。

您有责任管理您的数据是否会流出您组织的合规和地理边界之外及其任何相关影响,并确保已配置适当的权限、边界和审批。

你负责仔细查看和测试在特定用例上下文中生成的应用程序,并做出所有适当的决策和自定义。 这包括实施自己的负责任的 AI 缓解措施,例如元系统、内容筛选器或其他安全系统,并确保应用程序满足适当的质量、可靠性、安全性和可信度标准。 有关详细信息,请参阅 Azure AI 搜索 透明度说明。

Microsoft 365索引器(预览版)中的SharePoint从SharePoint文档库导入文档,并使文档在Azure AI 搜索中可搜索。 配置步骤在前,然后是行为和场景。

在Azure AI 搜索中,索引器从数据源中提取可搜索数据和元数据。 Microsoft 365索引器中的SharePoint提供以下功能:

  • 为一个或多个文档库中的文件和元数据编制索引。
  • 索引SharePoint列表及其项字段值,每个列表列都可用作字段映射的源字段。 此功能以预览版提供,从 2026-05-01-preview REST API 开始。
  • 为 ASPX 网站页面 编制索引(新式网站页面)。 此功能以预览版提供,从 2026-05-01-preview REST API 开始。
  • 使用 allSiteContent 容器值在单个索引器中为混合SharePoint内容(文档库、列表和网站页面)编制索引。 此功能以预览版提供,从 2026-05-01-preview REST API 开始。
  • 当在数据源查询中设置 includeSubsites=true 时,会跨所有子网站为内容建立索引。 此功能以预览版提供,从 2026-05-01-preview REST API 开始。
  • 以增量方式编制索引,只选取新的和已更改的文件、列表项、页面和元数据。
  • 自动检测已删除的内容。 文件、列表项或页面的删除操作会在索引器下一次运行时被检测到,并且相应的搜索文档会从索引中删除。
  • 自动从索引文档中提取文本和规范化图像。 (可选)可以添加用于更深入 AI 扩充的技能集,例如光学字符识别(OCR)或实体识别。
  • 支持预览版中的文档基本访问控制列表 (ACL) 引入。 从 2026-05-01-preview 版本开始,对于具有唯一权限的项,在索引器每次成功运行时,都会以增量方式检测并更新 ACL 更改。 此版本还将 ACL 引入扩展到列表项、ASPX 网站页面和SharePoint组。 有关注意事项和配置步骤,请参阅 使用SharePoint索引器引入权限元数据。
  • 支持引入 Microsoft Purview 敏感度标签并在查询时遵循该标签。 此功能以预览版提供。

先决条件

选择权限设置

在 步骤 3 中创建应用注册之前,请确定下表中的方案。 请注意所需的Microsoft Graph权限、SharePoint API 权限和凭据类型。 然后,按照本文后面的链接步骤应用它们。

Scenario Microsoft Graph 权限 SharePoint API 权限 凭证 应用于
仅为文档库编制索引,无 ACL 引入 Files.Read.All、Sites.Read.All(应用程序)或其委派等效项 没有 客户端机密(应用程序)或设备代码(委托) 步骤 3, 步骤 6
索引列表、ASPX 页面或混合内容(无 ACL 引入) Files.Read.All、 Sites.Read.All (应用程序) 没有 客户端机密或联合身份凭据 步骤 3
SharePoint网站组的 ACL 引入或查询时间解析 请参阅 ACL 权限矩阵。 请参阅 ACL 权限矩阵。 请参阅 ACL 权限矩阵。 ACL 场景下的权限

设置权限时,请考虑以下信息:

  • 委托的权限仅适用于小型测试,不支持 ACL 引入。
  • 联合身份凭据是推荐使用的无密钥身份验证方式。 它既涵盖索引器身份验证,也涵盖查询时的 SharePoint 组解析。
  • 使用 Sites.Selected 时,在编制索引之前,向应用授予对每个目标SharePoint网站的显式访问权限。 Microsoft Entra ID中的管理员许可Sites.Selected本身不会授权应用访问网站内容。 还必须为每个目标站点分配权限。 如果在未授予显式站点权限的情况下将站点添加到数据源,索引器将失败。 请参阅在使用 Sites.Selected 时授予站点访问权限。

支持的文档格式

Microsoft 365索引器中的SharePoint可以从以下文档格式中提取文本:

  • CSV (请参阅 为 CSV Blob 编制索引)
  • EML
  • EPUB
  • 广州
  • HTML
  • JSON (请参阅 为 JSON Blob 编制索引)
  • KML (地理表示形式的 XML)
  • Markdown
  • Microsoft Office格式:DOCX/DOC/DOCM、XLSX/XLS/XLSM、PPTX/PPT/PPTM、MSG(Outlook电子邮件)、XML(2003 和 2006 WORD XML)
  • 打开文档格式:ODT、ODS、ODP
  • PDF
  • 纯文本文件(另请参阅 索引纯文本)
  • RTF
  • XML
  • ZIP

限制和注意事项

以下是此功能的限制:

  • 不支持OneNote笔记本文件。

  • 增量索引限制:

    • 重命名SharePoint文件夹会中断增量索引编制。 重命名的文件夹被视为新内容。

    • Microsoft 365更新SharePoint文件系统元数据的进程可以触发增量索引,即使内容没有其他更改也是如此。 在依赖索引器或 AI 扩充之前,先测试您的配置。 验证Microsoft 365如何处理文档。

  • 安全限制:

以下是使用此功能时的一些注意事项:

  • 若要构建使用 Azure AI 搜索与 SharePoint 数据交互的自定义 Copilot 或检索增强生成 (RAG) 应用,Microsoft 建议使用远程 SharePoint 知识源。 此知识源使用 Copilot 检索 API直接从Microsoft 365中的SharePoint查询文本内容,将结果返回到代理检索引擎以进行合并、排名和响应表述。 此知识源不使用搜索索引,只查询文本内容。 Azure AI 搜索不会复制数据。 它仅返回每个用户有权查看的结果,从而强制实施SharePoint权限模型。

  • 如果您需要创建自定义的 Copilot/RAG 应用程序或 AI 代理,以便在生产环境中与 SharePoint 数据进行对话,请考虑首先通过 Microsoft Copilot Studio 直接创建它。 如果Copilot Studio不符合你的需求,请考虑:

无论选择哪种方法,无论是使用 SharePoint Webhook 构建自定义连接器还是创建Azure 逻辑应用工作流,都必须实现可靠的安全措施。 这些措施包括配置共享专用链接、设置防火墙以及保留源中的用户权限,并在查询时遵守这些权限。 还应定期审核和监视管道。

如果您为 SharePoint ACL 编制索引,请参阅 支持的组关系。 不会扩展嵌套在SharePoint组中的Microsoft Entra组。

在 Microsoft 365 索引器中配置SharePoint

若要在Microsoft 365索引器中设置SharePoint,请使用预览版 REST API。 本部分提供步骤。

(可选)步骤 1:启用系统分配的托管标识

启用系统分配的托管标识,以自动检测预配了搜索服务的 Microsoft Entra 租户。

如果SharePoint网站和搜索服务位于同一Microsoft Entra租户中,请执行以下步骤。 如果它们属于不同的 Microsoft Entra 租户,请跳过此步骤。 身份用于检测租户。 如果想要将 Microsoft Entra 租户 ID 放入 连接字符串,也可以跳过此步骤。 若要使用系统分配的或用户分配的托管标识进行无机密索引编制,请使用 无机密身份验证配置应用程序权限。

显示如何启用系统分配的托管标识的屏幕截图。

选择 “保存”后,会收到分配给搜索服务的对象 ID。

步骤 2:确定索引器所需的权限

有关涵盖 ACL 和非 ACL 方案的决策矩阵,请参阅 “选择权限设置”。 如果选择委派权限,则用户委托的令牌每 75 分钟过期一次,并在过期时需要使用 运行索引器(预览版) 手动编制索引。 建议仅对小型测试操作使用委派权限。

步骤 3:创建Microsoft Entra应用程序注册

Microsoft 365索引器中的SharePoint使用Microsoft Entra应用程序进行身份验证。 在配置应用程序权限和凭据之前创建应用程序注册。

  1. 登录到 Azure 门户。

  2. 搜索或导航到Microsoft Entra ID。

  3. 在 “概述 ”页上,选择“ + 添加>应用注册”。

    1. 输入应用的名称。
    2. 仅选择单租户 - 租户名称。
    3. 跳过 URI 指定步骤。 不需要重定向 URI。
    4. 选择 “注册”。
  4. 在左窗格中,选择“ 管理>API 权限”。

  5. 选择“+ 添加权限”,然后选择Microsoft Graph。

    • 如果索引器使用应用程序 API 权限,请选择 “应用程序权限”。

      • 对于标准索引,请选择:

        • Files.Read.All
        • Sites.Read.All

        应用程序 API 权限的屏幕截图。

      • 如果要启用 ACL 引入(预览版),则所需的权限取决于要编制索引的项类型(文档库文件、列表项、ASPX 页面)和组类型(Microsoft Entra与SharePoint网站组)。 完成此步骤之前,请参阅 ACL 方案的权限。 有关跨场景的摘要,请参阅 选择权限设置。

        使用应用程序权限意味着索引器访问服务上下文中的SharePoint站点。 因此,运行索引器时,它有权访问SharePoint租户中的所有内容,这需要租户管理员批准。 身份验证还需要客户端机密或无机密配置。 本文后面的“ 仅应用程序 API 权限的可用身份验证方法”下介绍了设置身份验证机制。

    • 如果索引器使用委托的 API 权限,请选择 “委派权限”,然后选择:

      • Files.Read.All
      • Sites.Read.All
      • User.Read

      显示委派的 API 权限的屏幕截图。

      委派的权限允许搜索客户端在当前用户的安全标识下连接到SharePoint。

  6. 选择授予租户名称管理员同意。

    使用应用程序 API 权限时,需要租户管理员同意。 某些租户受到严格限制,以至于即使是委派 API 权限,也需要租户管理员同意。 如果任一条件适用,则租户管理员必须在创建索引器之前为此Microsoft Entra应用程序授予许可。

    Screenshot 显示Microsoft Entra应用授予管理员许可。

  7. 在左窗格中,选择“管理>身份验证”(预览版)。

  8. 在 “重定向 URI 配置 ”选项卡上,选择“ + 添加重定向 URI”。

    1. 选择 “移动”和“桌面应用程序”。
    2. 选择 https://login.microsoftonline.com/common/oauth2/nativeclient 重定向 URI。
    3. 选择配置。
  9. 在 “设置” 选项卡上,启用 “允许公共客户端流 ”切换,然后选择“ 保存”。

  10. 根据解决方案需求配置索引器 身份验证方法 。

使用 Sites.Selected 时授予网站访问权限

如果使用 Sites.Selected 配置应用注册,请在运行索引器之前完成以下步骤。 Microsoft Entra ID 中针对 Sites.Selected 的管理员同意仅允许该应用使用有范围限制的 SharePoint 权限。 在单独分配网站权限之前,它不会授予对任何网站的访问权限。

  1. 在 Microsoft Entra ID 中:将 Sites.Selected 添加到应用注册中,并授予管理员同意。 在 API 范围下添加你的方案所需的权限,例如 Microsoft Graph;对于 ACL 引入场景,则添加 SharePoint。

  2. 在 SharePoint 中:为该应用在每个目标站点上分配权限角色。 对于索引内容,请至少授予读取访问权限。

    若要授予网站权限,请使用Microsoft Graph。 将 {siteId} 替换为你的站点 ID:

    POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
    Content-Type: application/json
    
    {
      "roles": ["read"],
      "grantedToIdentities": [
        {
          "application": {
            "id": "<application-client-id>",
            "displayName": "<application-display-name>"
          }
        }
      ]
    }
    

    若要使用 PnP PowerShell 授予相同的权限,请执行以下操作:

    Grant-PnPEntraIDAppSitePermission `
      -AppId "<application-client-id>" `
      -DisplayName "<application-display-name>" `
      -Site "https://<tenant>.sharepoint.com/sites/<site-name>" `
      -Permissions Read
    

仅适用于应用程序 API 权限的可用身份验证方法

若要使用应用程序权限对Microsoft Entra应用程序进行身份验证,索引器使用客户端密码或无机密配置。

使用客户端密码

这些说明将应用程序配置为使用客户端密码对索引器进行身份验证,以便它可以从SharePoint引入数据。

  • 从左侧菜单中选择 “证书和机密 ”,然后选择 “客户端机密 ”和“ 新建客户端机密”。

    显示新客户端机密的屏幕截图。

  • 在弹出的菜单中,输入新客户端密码的说明。 如有必要,请调整到期日期。 如果机密过期,则需要重新创建它并使用新机密更新索引器。

    显示如何设置客户端密码的屏幕截图。

  • 新的客户端密码将显示在机密列表中。 离开页面后,机密不可见,因此使用复制按钮复制值并将其保存在安全位置。

    显示复制客户端机密的位置的屏幕截图。

使用无机密身份验证获取应用程序令牌

使用联合凭据在没有客户端密码的情况下登录。 Microsoft Entra 信任托管标识来获取应用程序令牌,因此索引器无需存储机密即可从 SharePoint 提取数据。 下一部分将演练如何配置托管标识。

使用托管标识配置已注册的应用程序

  1. 根据方案要求,创建(或选择) 用户分配的托管标识并分配给搜索服务 或 系统分配的托管标识。

  2. 捕获 对象(主体)ID。 创建数据源时,使用此值作为凭据配置的一部分。

  3. 从左侧菜单中选择 “证书和机密 ”。

  4. 在 “联合凭据 ”下,选择“ + 添加凭据”。

  5. 在 “联合凭据情景 ”下,选择 “托管身份”。

  6. 选择托管标识:选择在步骤 1 中创建的托管标识。

  7. 为凭据添加名称,然后选择“ 保存”。

步骤 4:创建数据源

从本部分开始,请使用最新的预览版 REST API 和 REST 客户端,或您偏好的最新支持的 beta 版 SDK,来完成剩余步骤。

数据源指定要为哪些数据编制索引、凭据和策略,以有效标识数据中的更改(新的、修改的或删除的行)。 同一搜索服务中的多个索引器可以使用同一数据源。

对于SharePoint索引,数据源必须具有以下必需属性:

  • name 是搜索服务中数据源的唯一名称。
  • 类型 必须为“Sharepoint”。 此值区分大小写。
  • 凭据提供 SharePoint 终结点,还提供允许应用程序请求 Microsoft Entra 令牌的身份验证方法。 SharePoint终结点的示例为 https://[your-tenant-name].sharepoint.com/teams/MySharePointSite。 可以通过导航到SharePoint站点的主页并从浏览器复制 URL 来获取终结点。 请查看 连接字符串 格式是否支持该语法。
  • 容器 指定要编制索引的文档库。 属性控制哪些文档被编制索引。

若要创建数据源,请调用“创建数据源”(预览版)。

这是一个具有应用程序机密或系统分配的托管标识的凭据的数据源定义示例。

POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sharepoint-datasource",
    "type" : "sharepoint",
    "credentials" : { "connectionString" : "[connection-string]" },
    "container" : { "name" : "defaultSiteLibrary", "query" : null }
}

联合凭据配置要求在连接字符串中包含 FederatedCredentialApplicationId。 该值因标识类型而异:

  • 系统分配的托管标识:将 FederatedCredentialApplicationId 设置为该服务的系统分配的托管标识应用程序(客户端)ID。 省略 identity 块。
  • 用户分配的托管标识:在 identity 块中提供用户分配的托管标识资源路径。 将FederatedCredentialApplicationId设置为用户分配的托管标识自身的应用程序(客户端)ID。

注意

ApplicationId 和 FederatedCredentialApplicationId 不同值。 ApplicationId是您已注册的 Entra 引入应用程序,它持有 SharePoint 权限。 FederatedCredentialApplicationId是托管标识本身的应用程序(客户端)ID;该实体的令牌用于证明托管标识的身份。

POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sharepoint-datasource",
    "type" : "sharepoint",
    "credentials" : { "connectionString" : "[connection-string]" },
    "container" : { "name" : "defaultSiteLibrary", "query" : null },
    "identity": {
      "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
      "userAssignedIdentity": "/subscriptions/[Azure subscription ID]/resourceGroups/[resource-group]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[user-assigned managed identity]"
    }
}

连接字符串格式

连接字符串的格式根据索引器是使用委托的 API 权限还是应用程序 API 权限而更改。

  • 委托 API 权限的连接字符串格式

    SharePointOnlineEndpoint=[SharePoint site URL];ApplicationId=[Microsoft Entra application ID];TenantId=[SharePoint site's Microsoft Entra tenant ID]

  • 采用应用程序机密连接字符串格式的应用程序 API 权限

    SharePointOnlineEndpoint=[SharePoint site URL];ApplicationId=[Microsoft Entra application ID];ApplicationSecret=[Microsoft Entra application client secret];TenantId=[SharePoint site's Microsoft Entra tenant ID]

  • 采用无机密(联合标识凭据)连接字符串格式的应用程序 API 权限:

    SharePointOnlineEndpoint=[SharePoint site URL];ApplicationId=[Microsoft Entra application ID];FederatedCredentialApplicationId=[managed identity's application (client) ID];TenantId=[SharePoint site's Microsoft Entra tenant ID]

下表描述了每个连接字符串字段。

领域 必选 描述
SharePointOnlineEndpoint 是的 SharePoint网站 URL(例如,https://[your-tenant-name].sharepoint.com)。
ApplicationId 是的 引入应用程序的 Microsoft Entra 应用程序(客户端)ID。 必须是有效的 GUID。
TenantId Optional 拥有该 SharePoint 站点的租户的 Microsoft Entra 租户 ID(GUID)。 此租户不一定是与搜索服务关联的Microsoft Entra租户。 当 SharePoint 站点和搜索服务位于不同的 Microsoft Entra 租户中时,此项为必需。
ApplicationSecret Conditional 引入应用的客户端密钥。 用于基于机密的身份验证。
FederatedCredentialApplicationId 有条件(联合身份凭据) 用于验证托管标识的 Microsoft Entra 应用程序(客户端)ID。 必须是有效的 GUID。 对于系统分配的托管标识,请使用该标识的应用程序(客户端)ID。 对于用户分配的托管标识,请使用该标识自身的应用程序(客户端)ID。 federatedIdentityClientId identity对于在块中设置了相应值的跨租户用户分配的托管标识,请使用多租户应用的客户端 ID。

重要

FederatedCredentialApplicationId和ApplicationSecret是互相排斥的。 合并它们的连接字符串在数据源创建或更新时被拒绝。

设置权限时,请考虑以下信息:

为了向后兼容,SharePoint 索引器仍接受连接字符串中的 FederatedCredentialObjectId(表示引入应用上联合标识凭据的对象/主体 ID),因此现有数据源无需更改即可继续工作。 对新的和已更新的数据源使用 FederatedCredentialApplicationId。

若要获取 TenantId,请打开拥有 SharePoint 站点的租户的 Microsoft Entra 管理中心,并从 概述 中复制 租户 ID。

可以从object (principal) ID部分获取托管标识。

设置权限时,请考虑以下信息:

如果 SharePoint 站点和搜索服务位于同一 Microsoft Entra 租户中,并且启用了系统分配的托管身份,则不必在连接字符串中包含 TenantId。 如果它们位于不同的 Microsoft Entra 租户中,则必须包含 TenantId。

以下示例显示了使用 FederatedCredentialApplicationId以下命令创建的数据源:

具有联合凭据的系统分配托管标识:

POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]

{
  "name": "sharepoint-ds",
  "type": "sharepoint",
  "credentials": {
    "connectionString": "SharePointOnlineEndpoint=https://[your-tenant-name].sharepoint.com;ApplicationId=[Microsoft Entra application ID];TenantId=[SharePoint site's Microsoft Entra tenant ID];FederatedCredentialApplicationId=[system-assigned managed identity's application (client) ID]"
  },
  "container": { "name": "defaultSiteLibrary" }
}

具有联合凭据的用户分配托管标识(单租户):

{
  "name": "sharepoint-uami-fed",
  "type": "sharepoint",
  "credentials": {
    "connectionString": "SharePointOnlineEndpoint=https://[your-tenant-name].sharepoint.com;ApplicationId=[Microsoft Entra application ID];TenantId=[SharePoint site's Microsoft Entra tenant ID];FederatedCredentialApplicationId=[user-assigned managed identity application (client) ID]"
  },
  "container": { "name": "defaultSiteLibrary" },
  "identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/[subscription-id]/resourceGroups/[resource-group]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[uami-name]"
  }
}

注意

对于用户分配的托管标识, FederatedCredentialApplicationId 必须等于用户分配的托管标识的应用程序(客户端)ID,而不是引入应用的 ID(ApplicationId)。 如果省略identity块,索引器将回退到系统分配的托管标识。

跨租户用户分配的具有联合凭据的托管身份(高级):

使用此配置之前,请确保你的用户分配的托管标识已配置联合身份凭据,并且该凭据信任多租户 Microsoft Entra 应用。 有关设置步骤,请参阅 使用托管标识配置已注册的应用程序。

{
  "name": "sharepoint-uami-crosstenantfed",
  "type": "sharepoint",
  "credentials": {
    "connectionString": "SharePointOnlineEndpoint=https://[your-tenant-name].sharepoint.com;ApplicationId=[Microsoft Entra application ID];TenantId=[SharePoint site's Microsoft Entra tenant ID];FederatedCredentialApplicationId=[multitenant app client ID]"
  },
  "container": { "name": "defaultSiteLibrary" },
  "identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/[subscription-id]/resourceGroups/[resource-group]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[uami-name]",
    "federatedIdentityClientId": "[multi-tenant app client ID]"
  }
}

当用户分配的托管标识本身联合到多租户Microsoft Entra应用时,请使用跨租户用户分配的托管标识配置。 在这种情况下,将 federatedIdentityClientId 在 identity 块中设置为多租户应用的客户端 ID,并将连接字符串中的 FederatedCredentialApplicationId 设置为 同一 多租户应用的客户端 ID。 在此场景中,将FederatedCredentialApplicationId设置为用户分配的托管标识自身的客户端 ID 会导致验证失败。

如果索引器使用 SharePoint ACL 配置(预览版)或保留并遵循Microsoft Purview敏感度标签(预览),请在创建索引器之前查看相关文章。 每个功能都有特定的数据源、索引和技能集配置步骤。

步骤 5:创建索引

索引指定文档、属性和其他构造中构成搜索体验的字段。

若要创建索引,请调用“创建索引”(预览版):

POST https://[service name].search.windows.net/indexes?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sharepoint-index",
    "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "metadata_spo_item_name", "type": "Edm.String", "key": false, "searchable": true, "filterable": false, "sortable": false, "facetable": false },
        { "name": "metadata_spo_item_path", "type": "Edm.String", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "metadata_spo_item_content_type", "type": "Edm.String", "key": false, "searchable": false, "filterable": true, "sortable": false, "facetable": true },
        { "name": "metadata_spo_item_last_modified", "type": "Edm.DateTimeOffset", "key": false, "searchable": false, "filterable": false, "sortable": true, "facetable": false },
        { "name": "metadata_spo_item_size", "type": "Edm.Int64", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
    ]
}

重要

Microsoft 365索引器中SharePoint填充的索引中的键字段取决于数据源中的容器类型:

  • 对于文档库内容(defaultSiteLibrary、allSiteLibraries,或带有库或文件夹筛选器的 useQuery),请使用 metadata_spo_site_library_item_id。 如果数据源中不存在键字段, metadata_spo_site_library_item_id 则会自动映射到键字段。
  • 对于列表、页面或混合内容(allSiteLists或allSitePagesallSiteContent),请使用metadata_spo_site_asset_item_id。 此密钥字段处于预览状态,从 2026-05-01-preview REST API 开始。 自动映射不适用于此字段,请定义一个从 fieldMappings 到索引键字段的显式 metadata_spo_site_asset_item_id 条目。

将这些键字段映射到索引base64Encode字段时,使用id映射函数。

步骤 6:创建索引器

索引器将数据源与目标搜索索引连接,并提供自动执行数据刷新的计划。 创建数据源和索引后,创建索引器。

创建索引器:

  1. 发送 创建索引器(预览版) 请求:

    POST https://[service name].search.windows.net/indexers?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [admin key]
    
    {
        "name" : "sharepoint-indexer",
        "dataSourceName" : "sharepoint-datasource",
        "targetIndexName" : "sharepoint-index",
        "parameters": {
        "batchSize": null,
        "maxFailedItems": null,
        "base64EncodeKeys": null,
        "maxFailedItemsPerBatch": null,
        "configuration": {
            "indexedFileNameExtensions" : ".pdf, .docx",
            "excludedFileNameExtensions" : ".png, .jpg",
            "dataToExtract": "contentAndMetadata"
          }
        },
        "schedule" : { },
        "fieldMappings" : [
            { 
              "sourceFieldName" : "metadata_spo_site_library_item_id", 
              "targetFieldName" : "id", 
              "mappingFunction" : { 
                "name" : "base64Encode" 
              } 
             }
        ]
    }
    

    对于使用 allSiteLists、allSitePages 或 allSiteContent 容器值的数据源,应映射 metadata_spo_site_asset_item_id,而不是 metadata_spo_site_library_item_id。

    使用应用程序权限时,可以在初始索引器运行时查询索引,但只有已编制索引的项返回结果。 等到运行完成才能实现完整覆盖。 此步骤中的剩余说明仅适用于委派的权限。

  2. 首次创建索引器时, “创建索引器”(预览版) 请求将等待完成下一步。 必须调用 “获取索引器状态 ”才能获取链接并输入新的设备代码。

    GET https://[service name].search.windows.net/indexers/sharepoint-indexer/status?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [admin key]
    

    如果在 10 分钟内未调用 “获取索引器状态 ”,代码将过期,必须重新创建 数据源。

  3. 从 “获取索引器状态 ”响应中复制设备登录代码。 可以在“errorMessage”中找到设备登录代码。

    {
        "lastResult": {
            "status": "transientFailure",
            "errorMessage": "To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code <CODE> to authenticate."
        }
    }
    
  4. 输入错误消息中包含的代码。

    显示如何输入设备代码的屏幕截图。

  5. Microsoft 365 中的 SharePoint 索引器使用当前登录用户的身份访问 SharePoint 内容。 在此步骤中登录的用户是已登录的用户。 因此,如果使用无权访问要编制索引的文档库中的文档的用户帐户登录,索引器将无权访问该文档。

    如果可能,请创建新的组织用户帐户,并向其授予你希望索引器拥有的确切权限。

  6. 批准所请求的权限。

    显示如何批准 API 权限的屏幕截图。

  7. 如果前面提供的所有权限均正确且在 10 分钟的时间内, 则创建索引器(预览版) 初始请求完成。

设置权限时,请考虑以下信息:

如果Microsoft Entra应用程序需要管理员批准,并且未在登录前获得批准,则可能会看到以下屏幕。 需要管理员批准才能继续。

显示需要管理员审批的屏幕截图。

步骤 7:检查索引器状态

创建索引器后,调用 “获取索引器状态”

GET https://[service name].search.windows.net/indexers/sharepoint-indexer/status?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]
GET https://[service-name].search.windows.net/indexes/[index-name]/docs?search=*&$count=true&api-version=2026-08-01-preview
api-key: [admin-api-key]

更新数据源

如果不更新数据源对象,索引器将在计划上运行,无需任何用户交互。

如果在设备代码过期时更改数据源,请再次登录以运行索引器。 例如,如果更改数据源查询,请使用 https://microsoft.com/devicelogin 并获取新的设备代码再次登录。

若要更新数据源,请执行以下步骤,假设设备代码已过期:

  1. 调用 运行索引器(预览版) 以手动启动 索引器执行。

    POST https://[service name].search.windows.net/indexers/sharepoint-indexer/run?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [admin key]
    
  2. 检查 索引器状态。

    GET https://[service name].search.windows.net/indexers/sharepoint-indexer/status?api-version=2026-08-01-preview
    Content-Type: application/json
    api-key: [admin key]
    
  3. 如果收到要求你访问 https://microsoft.com/devicelogin的错误,请打开页面并复制新代码。

  4. 将代码粘贴到对话框中。

  5. 再次手动运行索引器并检查索引器状态。 这一次,索引器运行应成功启动。

索引文档元数据

如果为文档元数据编制索引("dataToExtract": "contentAndMetadata"),则可以使用以下元数据进行索引。

标识符 类型 描述
metadata_spo_site_library_item_id Edm.String 网站 ID、库 ID 和项 ID 的组合键,用于唯一标识网站文档库中的项。 将此字段用作 defaultSiteLibrary、allSiteLibraries 和 useQuery(库或文件夹筛选器)容器值的索引键。
metadata_spo_site_asset_item_id Edm.String 唯一标识列表项、ASPX 网站页面或任何混合内容模式下的资产的组合键。 将此字段用作 allSiteLists、allSitePages 和 allSiteContent 容器值的索引键。 预览版,从 2026-05-01-preview REST API 开始。
metadata_spo_site_id Edm.String SharePoint站点的 ID。
metadata_spo_library_id Edm.String 文档库的 ID。
metadata_spo_item_id Edm.String 库中(文档)项的 ID。
metadata_spo_item_last_modified Edm.DateTimeOffset 项的上次修改日期/时间(UTC)。
metadata_spo_item_name Edm.String 项的名称。
metadata_spo_item_size Edm.Int64 项的大小(以字节为单位)。
metadata_spo_item_content_type Edm.String 项目的内容类型。
metadata_spo_item_extension Edm.String 项的扩展名。
metadata_spo_item_weburi Edm.String 项目的 URI。
metadata_spo_item_path Edm.String 父路径与项名称的组合。
metadata_spo_site_url Edm.String SharePoint 网站的 URL。 启用 SharePoint 网站组解析时,此项为必填。 请参阅 配置SharePoint组支持。

Microsoft 365索引器中的SharePoint还支持特定于每个文档类型的元数据。 有关详细信息,请参阅Azure AI 搜索中使用的内容元数据属性。

设置权限时,请考虑以下信息:

若要为自定义元数据编制索引,请在 数据源的查询参数中指定“additionalColumns”。

为 SharePoint 列表编制索引

SharePoint 列表在预览版中可建立索引,自 2026-05-01-preview REST API 起提供此功能。 将数据源 container.name 设置为 allSiteLists 为网站中的所有列表项编制索引,或将 allSiteContent 列表项与单个索引器中的文档库和网站页面合并。 若要包含子网站列表,请将 includeSubsites=true 添加到 container.query 中。

对于基于列表的索引器或混合内容索引器,索引键字段必须映射自 metadata_spo_site_asset_item_id。 列表项内容以 JSON 格式的字段值显示在 content 字段中,并且为每个列表项填充标准 metadata_spo_item_* 字段(例如 metadata_spo_item_name, metadata_spo_item_weburi和 metadata_spo_item_last_modified)。

将列表列映射到索引字段

在SharePoint list上定义的每一列都显示为与SharePoint列同名的源字段。 使用 字段映射 将每列映射到索引字段。

例如,考虑具有以下列的 SharePoint 列表。

SharePoint 列 SharePoint 列类型
Title 单行文本
Price 编号
InStock Yes/No
Category 选择

将匹配字段添加到索引定义,然后将每个列映射到索引器中的目标字段:

{
  "name": "my-sharepoint-list-indexer",
  "dataSourceName": "my-sharepoint-list-ds",
  "targetIndexName": "products-index",
  "fieldMappings": [
    {
      "sourceFieldName": "metadata_spo_site_asset_item_id",
      "targetFieldName": "id",
      "mappingFunction": { "name": "base64Encode" }
    },
    { "sourceFieldName": "Title", "targetFieldName": "productName" },
    { "sourceFieldName": "Price", "targetFieldName": "price" },
    { "sourceFieldName": "InStock", "targetFieldName": "available" },
    { "sourceFieldName": "Category", "targetFieldName": "category" },
    { "sourceFieldName": "metadata_spo_item_last_modified", "targetFieldName": "lastUpdated" },
    { "sourceFieldName": "metadata_spo_item_weburi", "targetFieldName": "itemUrl" }
  ]
}

确保索引中的每个目标字段都存在,并且具有兼容的类型(例如,Edm.String可用于Title,Edm.Double或Edm.Int64可用于Price,Edm.Boolean可用于InStock)。

为 ASPX 网站页面编制索引

可以从 2026-05-01-preview REST API 开始,在预览版中为新式 ASPX 网站页面编制索引。 将数据源 container.name 设置为 allSitePages 为网站中的所有页面编制索引,或 allSiteContent 将页面与单个索引器中的文档库和列表组合在一起。 若要将子网站页面包含在内,请将 includeSubsites=true 添加到 container.query 中。

对于基于页面的索引器或混合内容索引器,索引键字段必须从 metadata_spo_site_asset_item_id 映射。 页面文本将提取到 content 字段中,并且为每个页面填充标准 metadata_spo_item_* 字段(例如 metadata_spo_item_name, metadata_spo_item_weburi和 metadata_spo_item_last_modified)。

按文件类型包含或排除

设置索引器定义的“parameters”部分中的包含和排除条件,以控制哪些文件已编制索引。

要包含特定文件扩展名,请将 "indexedFileNameExtensions" 设置为以点开头、逗号分隔的文件扩展名列表。 若要排除特定文件扩展名,请将 "excludedFileNameExtensions" 设置为要跳过的文件扩展名。 如果这两个列表中都显示相同的扩展,索引器会将其排除在索引编制中。

PUT /indexers/[indexer name]?api-version=2026-08-01-preview
{
    "parameters" : { 
        "configuration" : { 
            "indexedFileNameExtensions" : ".pdf, .docx",
            "excludedFileNameExtensions" : ".png, .jpeg" 
        } 
    }
}

控制哪些文档已编制索引

Microsoft 365索引器中的单个SharePoint可以从一个或多个文档库为内容编制索引。 若要指定要编制索引的站点和文档库,请在数据源定义中使用“container”参数。

数据源“container”部分具有此任务的两个属性:“name”和“query”。

名字

该 name 属性是必需的,并且必须是以下值之一:

价值 描述
defaultSiteLibrary 为网站默认文档库中的所有内容编制索引。
allSiteLibraries 为网站中所有文档库的所有内容编制索引。 除非在查询中设置 includeSubsites=true(预览),否则来自子网站的文档库不在范围内。 还可以选择 useQuery 并指定 includeLibrariesInSite 范围到特定网站或子网站。
allSiteLists 为网站中的所有SharePoint list项编制索引。 预览版,从 2026-05-01-preview REST API 开始。
allSitePages 为网站中的所有 新式 ASPX 网站页面 编制索引。 预览版,从 2026-05-01-preview REST API 开始。
allSiteContent 在单个索引器中为网站中的库、列表和页面编制索引。 预览版,从 2026-05-01-preview REST API 开始。
useQuery 仅为 query 中定义的内容建立索引。

对于使用 allSiteLists、allSitePages 或 allSiteContent 的数据源,索引器键字段映射必须使用 metadata_spo_site_asset_item_id,而不是 metadata_spo_site_library_item_id。 有关详细信息,请参阅 步骤 6:创建索引器。

查询

数据源的“query”参数由关键字/值对组成。 使用以下关键字。 这些值为网站 URL 或文档库 URL。

设置权限时,请考虑以下信息:

若要获取特定关键字的值,请转到要包含或排除的文档库,并从浏览器中复制 URI。 此方法是获取在查询中用于关键字的值的最简单方法。

关键 字 值说明和示例
null 如果为 null 或为空,请根据容器名称为默认文档库或所有文档库编制索引。

例子:

"container" : { "name" : "defaultSiteLibrary", "query" : null }
includeSubsites 当设置为 true 时,索引器将遍历根站点及其所有子站点。 与 allSiteLibraries、allSiteLists、allSitePages 或 allSiteContent 结合使用。 预览版,从 2026-05-01-preview REST API 开始。

例子:

"container" : { "name" : "allSiteLibraries", "query" : "includeSubsites=true" }
includeLibrariesInSite 为连接字符串中指定网站下的所有库的内容编制索引。 该值应为网站或子网站的 URI。

示例 1:

"container" : { "name" : "useQuery", "query" : "includeLibrariesInSite=https://mycompany.sharepoint.com/mysite" }

示例 2 (仅包括几个子网站):

"container" : { "name" : "useQuery", "query" : "includeLibrariesInSite=https://mycompany.sharepoint.com/sites/TopSite/SubSite1;includeLibrariesInSite=https://mycompany.sharepoint.com/sites/TopSite/SubSite2" }
includeLibrary 为此库的所有内容编制索引。 该值是库的完全限定路径,你可以从浏览器中复制:

示例 1 (完全限定的路径):

"container" : { "name" : "useQuery", "query" : "includeLibrary=https://mycompany.sharepoint.com/mysite/MyDocumentLibrary" }

示例 2(从浏览器复制的 URI):

"container" : { "name" : "useQuery", "query" : "includeLibrary=https://mycompany.sharepoint.com/teams/mysite/MyDocumentLibrary/Forms/AllItems.aspx" }
excludeLibrary 不要为此库的内容编制索引。 该值是库的完全限定路径,你可以从浏览器中复制:

示例 1 (完全限定的路径):

"container" : { "name" : "useQuery", "query" : "includeLibrariesInSite=https://mysite.sharepoint.com/subsite1; excludeLibrary=https://mysite.sharepoint.com/subsite1/MyDocumentLibrary" }

示例 2(从浏览器复制的 URI):

"container" : { "name" : "useQuery", "query" : "includeLibrariesInSite=https://mycompany.sharepoint.com/teams/mysite; excludeLibrary=https://mycompany.sharepoint.com/teams/mysite/MyDocumentLibrary/Forms/AllItems.aspx" }
包含文件夹 为特定文件夹及其子文件夹中的内容编制索引。 值必须是完整的SharePoint文件夹 URL。

行为:以递归方式应用于所有子文件夹。 可以通过用分号重复参数来指定多个文件夹。 文件夹筛选器的范围限定为单个文档库。 不支持仅有根目录的路径。 如果重命名引用的文件夹,则必须更新查询。

示例 1(单个文件夹):
"container": { "name": "useQuery", "query": "includeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Policies" }

示例 2 (多个文件夹):
"container": { "name": "useQuery", "query": "includeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Specs;includeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Designs" }
排除文件夹 不要为特定文件夹及其子文件夹中的内容编制索引。 值必须是完整的SharePoint文件夹 URL。

行为:以递归方式应用于所有子文件夹。 如果一个文件同时符合包含和排除规则,则以排除规则为准,文件将被跳过。 文件夹筛选器的范围限定为单个文档库。

示例 1 (排除文件夹):
"container": { "name": "useQuery", "query": "excludeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Policies/Archive" }

示例 2 (合并包括 + 排除):
"container": { "name": "useQuery", "query": "includeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Policies;excludeFolder=[your-tenant-name].sharepoint.com/sites/hr/Shared Documents/Policies/Drafts" }
additionalColumns 为文档库中的列编制索引。 该值是一个用逗号分隔的列名称列表,这些列名称是您想要索引的。 使用双反斜杠来对列名中的分号和逗号进行转义:

示例 1 (additionalColumns=MyCustomColumn,MyCustomColumn2):

"container" : { "name" : "useQuery", "query" : "includeLibrary=https://mycompany.sharepoint.com/mysite/MyDocumentLibrary;additionalColumns=MyCustomColumn,MyCustomColumn2" }

示例 2(使用双反斜杠转义字符):

"container" : { "name" : "useQuery", "query" : "includeLibrary=https://mycompany.sharepoint.com/teams/mysite/MyDocumentLibrary/Forms/AllItems.aspx;additionalColumns=MyCustomColumnWith\\,,MyCustomColumnWith\\;" }

处理错误

对于 Invalid AAD tenant 消息、缺少 Microsoft Entra 租户 ID,或者索引器执行历史记录中显示租户不匹配的情况,请参阅排查常见索引器错误和警告。

默认情况下,Microsoft 365索引器中的SharePoint在遇到不受支持的内容类型(如图像)的文档时立即停止。 使用 excludedFileNameExtensions 参数跳过某些内容类型。 但是,你可能不需要事先知道所有可能的内容类型即可为文档编制索引。 若要在索引器遇到不支持的内容类型时继续编制索引,请将 failOnUnsupportedContentType 配置参数设置为 false:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]

{
    ... other parts of indexer definition
    "parameters" : { "configuration" : { "failOnUnsupportedContentType" : false } }
}

对于某些文档,Azure AI 搜索无法确定内容类型或无法处理其他受支持的内容类型的文档。 若要忽略此失败模式,请将 failOnUnprocessableDocument 配置参数设置为 false:

"parameters" : { "configuration" : { "failOnUnprocessableDocument" : false } }

SharePoint 源文件使用适用于类似 Blob 的索引器的共享源文件大小和提取字符数限制。 默认情况下,超大文档被视为错误。 但是,如果将配置参数设置为 indexStorageMetadataOnlyForOversizedDocuments true,仍然可以为超大文档的存储元数据编制索引:

"parameters" : { "configuration" : { "indexStorageMetadataOnlyForOversizedDocuments" : true } }

如果添加技能集,请分别检查每个技能的输入和下游服务限制。 技能可以接受的数据少于SharePoint索引器提取的数据。

如果在分析文档或向索引添加文档时发生错误,则还可以继续编制索引。 若要忽略特定数量的错误,请将 maxFailedItems 和 maxFailedItemsPerBatch 配置参数设置为所需的值。 例如:

{
    ... other parts of indexer definition
    "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 10 }
}