在 Azure AI 搜索 中,查询可在加载到 搜索索引 上执行,或通过 远程知识源 执行(如果使用代理检索)。
本文介绍用于填充搜索服务索引的两个基本工作流:以编程方式将数据推送到索引中,或使用搜索索引器拉取数据。
这两种方法都从外部数据源加载文档。 尽管可以创建空索引,但只有在添加了内容之后,才能进行查询。
将数据推送至索引
推送模型是使用 API 将文档上传到现有搜索索引的一种方法。 你可以单个或批量上传文档(每批最多 1000 个或 16 MB,以先达到的为准)。
主要优势包括:
它对数据源类型没有限制。 有效负载必须由映射到索引架构的 JSON 文档组成,但数据可以源自任意位置。
它对执行频率没有限制。 可以随时将更改推送到索引。 对于具有极低延迟要求的应用程序(例如,如果索引需要与产品库存波动同步),只能选择推送模型。
文档的连接和安全检索完全由你控制。 相比之下,索引器连接使用Azure AI 搜索中提供的安全功能进行身份验证。
如何将数据推送到Azure AI 搜索索引
使用以下 API 将单个或多个文档加载到一个索引中:
- 索引文档 (REST API)
- IndexDocumentsAsync (Azure SDK for .NET) 或 SearchIndexingBufferedSender
- IndexDocumentsBatch (Azure SDK for Python) 或 SearchIndexingBufferedSender
- IndexDocumentsBatch (Azure SDK for Java) 或 SearchIndexingBufferedSender
- IndexDocumentsBatch(Azure SDK for JavaScript,或 SearchIndexingBufferedSender
不支持通过 Azure 门户推送数据。
有关推送 API 的简介,请参阅:
索引操作:上传、合并、mergeOrUpload、删除
可以按文档控制索引操作的类型,指定是应该完整地上传文档、与现有文档内容合并还是将其删除。
无论使用 REST API 还是Azure SDK,数据导入都支持以下文档操作:
上传类似于“upsert”,如果文档是新文档,则插入;如果文档已经存在,则进行更新或替换。 如果文档缺少索引所需的值,则将文档字段的值设置为 null。
合并会更新已有的文档,如果找不到该文档,则会失败。 合并将替换现有值。 因此,请务必检查是否有包含多个值的集合字段,例如类型为
Collection(Edm.String)的字段。 例如,如果tags字段以["budget"]值开头,并且你执行与["economy", "pool"]的合并,则tags字段的最终值为["economy", "pool"]。 不会是["budget", "economy", "pool"]。如果文档已存在,则 mergeOrUpload 的行为类似于合并,如果文档是新的,则类似于上传。
删除会从索引中移除整个文档。 如果你想删除某个字段,请改用合并,将相应字段设置为 NULL。
将数据拉取到索引中
提取模型使用索引器连接到支持的数据源,将数据自动上传到索引中。 来自Azure的索引器可用于以下平台:
Microsoft的索引器可用于以下平台:
- Azure Blob 存储
- Azure表存储
- Azure Data Lake Storage Gen2
- Azure 文件存储(预览版)
- Azure Cosmos DB
- Azure SQL 数据库、SQL 托管实例 和 SQL Server 在 Azure VM 上
如果为代理检索配置 索引化知识源,Azure AI 搜索创建索引器管道并使用知识源中的属性加载索引。
借助这些自动化方法,可以将索引连接到数据源(通常是表、视图、容器或等效结构),并将源字段映射到索引中的等效字段。 在执行期间,行集会自动转换为 JSON 并载入指定的索引中。 所有索引器都支持调度,使用户能够指定数据的刷新频率。 大多数索引器提供更改跟踪(如果受数据源的支持)。 除了识别新文档外,通过跟踪对现有文档的更改和删除,索引器无需主动管理索引中的数据。
如何将数据拉取到Azure AI 搜索索引中
使用以下工具和 API 进行基于索引器的索引编制:
- Azure门户:导入数据向导
- REST API:创建索引器 (REST)、创建数据源 (REST)、创建索引 (REST)
- Azure SDK for .NET:SearchIndexer、SearchIndexerDataSourceConnection、SearchIndex、
- Python Azure SDK:SearchIndexer、SearchIndexerDataSourceConnection、SearchIndex、
- Java Azure SDK:SearchIndexer、SearchIndexerDataSourceConnection、SearchIndex、
- 适用于 JavaScript 的 Azure SDK:SearchIndexer、SearchIndexerDataSourceConnection、SearchIndex、
索引器功能在 Azure 门户中、REST API 和 .NET SDK 中公开。
使用Azure门户的优点是,Azure AI 搜索通常可以通过读取源数据集的元数据来生成默认索引架构。
使用搜索浏览器验证数据导入
对文档上传执行初步检查的快速方法是在Azure门户中使用 Search explorer。
使用资源管理器可以直接查询索引,而无需编写任何代码。 搜索体验取决于默认设置,例如简单语法和默认的 searchMode 查询参数。 结果以 JSON 格式返回,方便用户检查整个文档。
下面是可在 JSON 视图中的搜索资源管理器中运行的示例查询。 “HotelId”是酒店示例索引的文档键。 筛选器给出特定文档的文档 ID。
{
"search": "*",
"filter": "HotelId eq '50'"
}
如果使用的是 REST,则此查找查询可以实现相同的目的。