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

Azure AI 搜索中的数据导入

在 Azure AI 搜索中,将会针对已加载到搜索索引中用户拥有的内容执行查询。 本文介绍用于填充索引的两个基本工作流:以编程方式将数据推送到索引中,或者使用搜索索引器拉取数据。

这两种方法都从外部数据源加载文档。 尽管可以创建空索引,但只有在添加了内容之后,才能进行查询。

注意

如果 AI 扩充是解决方案要求,则必须使用拉取模型(索引器)来加载索引。 技能组附加到索引器,不会独立运行。

将数据推送至索引

推送模型是一种使用 API 将文档上传到现有搜索索引的方法。 可以单独或批量上传文档,每个批最多可以上传 1000 个文档,每个批最多上传 16 MB,以先达到限制。

主要优势包括:

  • 对数据源类型没有限制。 有效负载必须由映射到索引架构的 JSON 文档组成,但数据可以从任意位置进行源。

  • 对执行频率没有限制。 可以根据需要选择相应的频率,将更改推送到索引。 对于延迟要求较低的应用程序(例如,当索引需要与产品库存波动同步时),推送模型是唯一的选择。

  • 连接性和文档的安全检索完全由你控制。 相比之下,索引器连接是使用 Azure AI 搜索中提供的安全功能进行身份验证的。

如何将数据推送至 Azure AI 搜索索引

使用以下 API 将单个或多个文档加载到索引中:

不支持通过Azure 门户推送数据。

有关推送 API 的简介,请参阅:

索引操作:上传、合并、mergeOrUpload、删除

可以按文档控制索引操作的类型,指定是应该完整地上传文档、与现有文档内容合并还是将其删除。

无论是使用 REST API 还是 Azure SDK,数据导入都支持以下文档操作:

  • 上传,类似于插入文档(如果为新文档)的“upsert”,如果文档存在,则更新或替换文档。 如果文档缺少索引所需的值,则将文档字段的值设置为 null。

  • 合并 更新已存在的文档,但找不到文档失败。 合并将替换现有值。 因此,请务必检查是否有包含多个值的集合字段,例如类型为 Collection(Edm.String) 的字段。 例如,如果 tags 字段以 ["budget"] 值开头,并且你执行与 ["economy", "pool"] 的合并,则 tags 字段的最终值为 ["economy", "pool"]。 而不会是 ["budget", "economy", "pool"]

  • 如果文档已存在,则 mergeOrUpload 的行为类似于合并,如果文档是新的,则类似于上传。

  • delete 从索引中删除整个文档。 如果你想删除某个字段,请改用合并,将相应字段设置为 NULL。

将数据拉取到索引中

拉取模型使用 连接到支持的数据源的索引器 ,自动将数据上传到索引中。 Microsoft 中的索引器可用于以下平台:

可以使用由 Microsoft 合作伙伴开发和维护的第三方连接器。 有关详细信息和链接,请参阅 数据源库

索引器将索引连接到数据源(通常是表、视图或等效的结构),将源字段映射到索引中的等效字段。 在执行期间,行集会自动转换为 JSON 并载入指定的索引中。 所有索引器都支持调度,使用户能够指定数据的刷新频率。 大多数索引器提供更改跟踪(如果受数据源的支持)。 除了识别新文档外,通过跟踪对现有文档的更改和删除外,索引器免除了主动管理索引中数据的必要。

如何将数据拉取至 Azure AI 搜索索引

使用以下工具和 API 进行基于索引器的索引编制:

索引器功能在 [Azure 门户] 、REST API.NET SDK 中公开。

使用门户的一个优势在于,Azure AI 搜索通常可以通过读取源数据集的元数据来生成默认的索引架构。

使用搜索浏览器验证数据导入

针对文档上传执行初步检查的捷径之一是在门户中使用搜索浏览器

Screenshot of Search Explorer command in the Azure portal.

使用资源管理器可以直接查询索引,而无需编写任何代码。 搜索体验取决于默认设置,例如简单语法和默认的 searchMode 查询参数。 结果以 JSON 格式返回,方便用户检查整个文档。

下面是可在 JSON 视图中的搜索资源管理器中运行的示例查询。 “HotelId”是 hotels-sample-index 的文档键。 筛选器器提供特定文档的文档 ID:

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

如果使用的是 REST,则此查找查询可以实现相同的目的。

另请参阅