你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。
重要
标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。 Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。
重要
这些特性和功能支持与其他Microsoft 服务和第三方服务的连接。 使用这些服务受其各自的条款的约束,可能会导致数据处理或存储超出Azure符合性边界,以及流入Azure符合性边界的数据。
您有责任管理您的数据是否会流出您组织的合规和地理边界之外及其任何相关影响,并确保已配置适当的权限、边界和审批。
你负责仔细查看和测试在特定用例上下文中生成的应用程序,并做出所有适当的决策和自定义。 这包括实施自己的负责任的 AI 缓解措施,例如元系统、内容筛选器或其他安全系统,并确保应用程序满足适当的质量、可靠性、安全性和可信度标准。 有关详细信息,请参阅 Azure AI 搜索 透明度说明。
Azure 文件存储索引器(预览版)将文件共享中的内容导入到Azure AI 搜索索引中。 索引器的输入是位于单个共享中的文件。 输出是一个搜索索引,其中包含存储在单个字段中的可搜索内容和元数据。
若要配置和运行索引器,可以使用:
- 搜索服务预览版 REST API,任意版本。
- Azure SDK包,任何版本。
- Azure 门户中的导入数据向导。
先决条件
Azure 文件存储事务优化层。
包含文本的文件。 如果有二进制数据,则可以包含用于图像分析的 AI 扩充 。
由 Azure 文件存储 索引器处理的源文件采用Blob 类索引器共享的源文件大小限制和提取字符数限制。
读取对Azure 存储的权限。 “完全访问权限”的连接字符串包括一个密钥,该密钥授予对内容的访问权限。
使用 REST 客户端 来构建类似于本文所示的 REST 调用。
支持的任务
可以将此索引器用于以下任务:
- 数据索引和增量索引: 索引器可以从表为文件和关联的元数据编制索引。 它通过内置的更改检测检测来检测新的和更新的文件和元数据。 可以按计划或按需配置数据刷新。
- 删除检测: 索引器可以通过 自定义元数据检测删除。
- 通过技能集应用 AI:技能集 完全受索引器支持。 这包括 集成矢量化 等关键功能,用于添加数据分块和嵌入步骤。
- 分析模式: 如果要将 JSON 数组或行分析为单个搜索文档,索引器支持 JSON 分析模式 。 它还支持 Markdown 分析模式。
- 与其他功能的兼容性: 索引器旨在与其他索引器功能无缝协作,例如 调试会话、 用于增量扩充的索引器缓存和 知识存储。
支持的文档格式
Azure 文件存储索引器可以从以下文档格式中提取文本:
- 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
- 纯文本文件(另请参阅 索引纯文本)
- RTF
- XML
- ZIP
如何为Azure 文件存储编制索引
默认情况下,大多数文件都作为索引中的单个搜索文档编制索引,包括包含结构化内容(如 JSON 或 CSV)的文件,这些文件作为单个文本区块进行索引。
复合文档或嵌入文档(如 ZIP 存档、包含附件的嵌入Outlook电子邮件的Word文档或 .带附件的 MSG 文件也作为单个文档编制索引。 例如,从 .MSG 文件的附件中提取的所有图像将会在 normalized_images 字段中返回。 如果你有图像,请考虑添加 AI 扩充 ,以便从该内容获取更多搜索实用工具。
文档的文本内容将提取到名为“content”的字符串字段中。 还可以提取标准元数据和用户定义的元数据。
定义数据源
数据源定义指定要索引的数据、凭据以及用于识别数据变化的策略。 数据源定义为独立资源,以便多个索引器可以使用它。
可以为“类型”使用 2020-06-30-preview 或更高版本:"azurefile"。 建议使用最新的预览 API。
使用“type”的预览 API 创建数据源来设置其定义:
"azurefile"。POST /datasources?api-version=2026-08-01-preview { "name" : "my-file-datasource", "type" : "azurefile", "credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" }, "container" : { "name" : "my-file-share", "query" : "<optional-directory-name>" } }将“type”设置为
"azurefile"(必需)。将 "credentials" 设置为一个 Azure 存储连接字符串。 下一部分介绍支持的格式。
将“container”设置为根文件共享,并使用“query”指定任何子文件夹。
如果希望索引器在标记要删除源文档时删除搜索文档,数据源定义还可以包括 软删除策略。
支持的凭据和连接字符串
索引器可以使用以下连接连接到文件共享。
| 完全访问存储帐户连接字符串 |
|---|
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" } |
| 在 Azure 门户中的“存储帐户”页面左侧窗格中选择访问密钥即可获取连接字符串。 请确保选择完整的连接字符串,而不仅仅是键。 |
将搜索字段添加到索引
在 search 索引中添加字段以接受Azure文件的内容和元数据。
创建或更新索引 以定义将存储文件内容和元数据的搜索字段。
POST /indexes?api-version=2026-04-01 { "name" : "my-search-index", "fields": [ { "name": "ID", "type": "Edm.String", "key": true, "searchable": false }, { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false }, { "name": "metadata_storage_name", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true }, { "name": "metadata_storage_path", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true }, { "name": "metadata_storage_size", "type": "Edm.Int64", "searchable": false, "filterable": true, "sortable": true }, { "name": "metadata_storage_content_type", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true } ] }创建文档键字段(“key”: true)。 对于 Blob 内容,最佳候选项是元数据属性。 元数据属性通常包括文档键无效的字符,例如
/和-。 索引器自动对键元数据属性进行编码,无需配置或字段映射。metadata_storage_path(默认值) 对象或文件的完整路径metadata_storage_name仅当名称是唯一的时才可用要添加到 Blob 中的自定义元数据属性。 此选项要求在 Blob 上传过程中,将元数据属性添加到所有 Blob 中。 由于密钥是必需属性,因此缺少值的任何 Blob 将无法编制索引。 如果使用自定义元数据属性作为键,请避免对该属性进行更改。 如果键属性发生更改,索引器将为同一 Blob 添加重复的文档。
添加“content”字段,通过 Blob 的“content”属性存储每个文件中提取的文本。 无需使用此名称,但这样做可以利用隐式字段映射。
添加标准元数据属性的字段。 在文件索引中,标准元数据属性与 Blob 元数据属性相同。 Azure 文件存储索引器会自动创建内部字段映射,将连字符命名的属性名称转换为下划线命名的属性名称。 仍需添加要使用的索引定义的字段,但可以省略在数据源中创建字段映射。
-
metadata_storage_name (
Edm.String) - 文件名。 例如,如果你有文件 /my-share/my-folder/subfolder/resume.pdf,则此字段的值为resume.pdf。 -
metadata_storage_path (
Edm.String) - 文件的完整 URI,包括存储帐户。 例如,https://myaccount.file.core.windows.net/my-share/my-folder/subfolder/resume.pdf -
metadata_storage_content_type (
Edm.String) - 由用于上传文件的代码指定的内容类型。 例如,application/octet-stream. -
metadata_storage_last_modified (
Edm.DateTimeOffset) - 文件的上次修改时间戳。 Azure AI 搜索使用此时间戳标识已更改的文件,以避免在初始索引后重新编制所有内容索引。 -
metadata_storage_size (
Edm.Int64) - 文件大小(以字节为单位)。 -
metadata_storage_content_md5 (
Edm.String) - 文件内容的 MD5 哈希(如果可用)。 -
metadata_storage_sas_token (
Edm.String) - 一个临时的 SAS 令牌,可供 自定义技能 访问文件。 此令牌不应存储以供以后使用,因为它可能会过期。
-
metadata_storage_name (
配置并运行Azure 文件存储索引器
创建索引和数据源后,即可创建索引器。 索引器配置指定控制运行时行为的输入、参数和属性。
通过为其提供名称和引用数据源和目标索引来创建或更新索引器:
POST /indexers?api-version=2026-04-01 { "name" : "my-file-indexer", "dataSourceName" : "my-file-datasource", "targetIndexName" : "my-search-index", "parameters": { "batchSize": null, "maxFailedItems": null, "maxFailedItemsPerBatch": null, "configuration": { "indexedFileNameExtensions" : ".pdf,.docx", "excludedFileNameExtensions" : ".png,.jpeg" } }, "schedule" : { }, "fieldMappings" : [ ] }在可选的“配置”部分中,提供任何包含或排除条件。 如果未指定,则检索文件共享中的所有文件。
如果同时有
indexedFileNameExtensions和excludedFileNameExtensions参数,Azure AI 搜索 首先查看indexedFileNameExtensions,然后查看excludedFileNameExtensions。 如果这两个列表中都存在相同的文件扩展名,则会将其从索引中排除。如果字段名称或类型存在差异,或者搜索索引中需要多个版本的源字段,请指定字段映射。
在文件索引中,通常可以省略字段映射,因为索引器内置支持将“内容”和元数据属性映射到索引中类似命名和类型化的字段。 对于元数据属性,索引器将自动将连字符
-替换为搜索索引中的下划线。有关其他属性的详细信息,请参阅 “创建索引器 ”。
索引器在创建时自动运行。 可以通过将“disabled”设置为 true 来阻止此操作。 若要控制索引器执行, 请按需运行索引器 或 将其设置为定期运行。
检查索引器状态
若要监视索引器状态和执行历史记录,请发送 获取索引器状态 请求:
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
响应包括状态和已处理的项数。 它应类似于以下示例:
{
"status":"running",
"lastResult": {
"status":"success",
"errorMessage":null,
"startTime":"2022-02-21T00:23:24.957Z",
"endTime":"2022-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
"executionHistory":
[
{
"status":"success",
"errorMessage":null,
"startTime":"2022-02-21T00:23:24.957Z",
"endTime":"2022-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
... earlier history items
]
}
执行历史记录最多包含50条最近完成的执行记录,这些记录按时间倒序排列,因此最新的执行记录将排在最前面。