使用 Azure 数据工厂为外部数据源中的数据编制索引
在组织的搜索解决方案中,添加不驻留在 Azure 中的外部数据是一种常见需求。 Azure AI 搜索非常灵活,因为它允许通过多种方式创建数据并将其推送到索引中。
使用 Azure 数据工厂将数据推送到搜索索引(ADF)
第一种方法是使用 ADF 将数据推送到索引的零代码选项。 ADF 与近 100 个不同的数据存储建立连接。 使用 HTTP 和 REST 等连接器,可以连接无限数量的数据存储。 这些数据存储用作管道中的源或目标(称为复制活动中的接收器)。
Azure AI 搜索索引连接器可用作复制活动中的接收器。
创建 ADF 管道以将数据推送到搜索索引中
使用 ADF 管道将数据推送到搜索索引时需要执行的步骤如下:
- 创建包含要在其中存储数据的所有字段的 Azure AI 搜索索引。
- 使用复制数据步骤创建管道。
- 创建与数据驻留位置的数据源连接。
- 创建接收器以连接到搜索索引。
- 将源数据中的字段映射到搜索索引。
- 运行管道以将数据推送到索引中。
例如,假设你有 JSON 格式的客户数据,这些数据托管在外部。 你想要将这些客户复制到搜索索引中。 JSON 采用以下格式:
{
"_id": "5fed1b38309495de1bc4f653",
"firstName": "Sims",
"lastName": "Arnold",
"isAlive": false,
"age": 35,
"address": {
"streetAddress": "Sumner Place",
"city": "Canoochee",
"state": "Palau",
"postalCode": 1558
},
"phoneNumbers": [
{
"type": "home",
"number": "+1 (830) 465-2965"
},
{
"type": "home",
"number": "+1 (889) 439-3632"
}
]
}
创建搜索索引
创建 Azure AI 搜索服务和用于存储此信息的索引。 如果已完成 创建 Azure AI 搜索解决方案 模块,则已了解如何执行此作。 按照步骤创建搜索服务,但在导入数据时停止。 由于将数据推送到索引不需要创建索引器或技能集。
创建索引并添加以下字段和属性:
目前必须首先创建索引,因为 ADF 无法创建索引。
使用 ADF 复制数据工具创建管道
打开 Azure 数据工厂工作室 并选择 Azure 订阅和数据工厂名称。
选择 引入。
选择“下一步”。
注释
如果数据发生更改,并且需要保留索引 up-to-date,则可以选择计划管道。 对于此示例,你将导入一次数据。
创建源链接服务
在 源类型中,选择 HTTP。
在 连接旁边,选择 + 新建连接。
在 “新建连接”窗格中,在 名称 输入 dataLocation 。
在 基 URL中,输入 JSON 文件所在的位置,在本示例中输入 https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-import-data/main/json/user1.json。
在 身份验证类型中,选择 匿名。
选择 创建。
选择“下一步”。
在 文件格式中,选择 JSON。
选择“下一步”。
创建目标链接服务
在 目标类型中,选择 Azure 搜索。 然后选择“+ 新建连接”。
在 “新建连接”窗格中,在 名称 输入 search_index。
在 Azure 订阅中,选择 Azure 订阅。
在 服务名称中,选择 Azure AI 搜索服务。
选择 创建。
在 目标数据存储 窗格中,在 目标中,选择创建的搜索索引。
将源字段映射到目标字段
选择“下一步”。
如果使用与 JSON 属性 ADF 匹配的字段名称创建了索引,则会自动将 JSON 映射到搜索索引中的字段。
在上面的示例中,JSON 文档中的三个字段需要映射到索引中的字段。
映射字段,然后选择“下一步”。
在 设置 窗格中,在 任务名称中,输入 jsonToSearchIndex 。
选择“下一步”。
运行管道以将数据推送到索引中
管道已部署并运行。 JSON 文档将添加到搜索索引。 可以使用 Azure 门户并在搜索资源管理器中运行搜索。 应会看到导入的 JSON 数据。
按照以下步骤作,了解如何将数据推送到索引中。 默认情况下创建的管道会将更新合并到索引中。 如果修改了 JSON 数据并重新运行管道,则会更新搜索索引。 只有在每次运行管道时都希望替换数据时,才能更改写入行为以上传。
将内置 Azure AI 搜索用作链接服务的限制
目前,作为接收器的 Azure AI 搜索链接服务仅支持以下字段:
Azure AI 搜索数据类型 |
---|
字符串 |
Int32 |
Int64 |
加倍 |
布尔值 |
DataTimeOffset |
这意味着目前不支持 ComplexType 和数组。 查看上面的 JSON 文档意味着无法映射客户的所有电话号码。 仅映射了第一个电话号码。