使用 Azure 数据工厂 或 Synapse Analytics 将数据复制到Azure AI 搜索索引

适用于: Azure 数据工厂 Azure Synapse Analytics

本文概述了如何使用 Azure 数据工厂 或 Synapse Analytics 管道中的复制活动将数据复制到Azure AI 搜索索引中。 基于提供复制活动一般概述的复制活动概述一文。

支持的功能

以下功能支持此Azure AI 搜索连接器:

支持的功能 IR 托管私有终结点
复制活动 (-/接收器) (1) (2) ✓

(1) Azure集成运行时 (2) 自承载集成运行时

可以将数据从任何支持的源数据存储复制到搜索索引中。 要获取复制活动支持的源/汇的数据存储列表,请参阅支持的数据存储表。

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

通过 UI 创建到 Azure AI 搜索 的链接服务

使用以下步骤在 Azure 门户 UI 中创建指向 Azure AI 搜索 的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡,并选择“链接服务”,然后单击“新建”:

  2. 搜索“Search”,然后选择 Azure AI 搜索 连接器。

    选择Azure AI 搜索连接器。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    将链接服务配置为Azure AI 搜索。

连接器配置详细信息

以下部分提供有关用于定义特定于Azure AI 搜索连接器的数据工厂实体的属性的详细信息。

连接的服务属性

Azure AI 搜索链接服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为:AzureSearch 是
url 搜索服务的 URL。 是
关键值 搜索服务的管理密钥。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库 中的机密。 是
connectVia 连接到数据存储时要使用的Integration Runtime。 可以使用 Azure Integration Runtime 或自托管 Integration Runtime(如果数据存储位于私有网络中)。 如果未指定,则使用默认Azure Integration Runtime。 否

重要

当从云数据存储复制数据到搜索索引时,在 Azure AI 搜索 链接服务中,你需要在 connectVia 中引用一个具有显式区域的 Azure Integration Runtime。 将区域设置为搜索服务所在的区域。 从 Azure Integration Runtime 了解详细信息。

示例:

{
    "name": "AzureSearchLinkedService",
    "properties": {
        "type": "AzureSearch",
        "typeProperties": {
            "url": "https://<service>.search.chinacloudapi.cn",
            "key": {
                "type": "SecureString",
                "value": "<AdminKey>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供Azure AI 搜索数据集支持的属性列表。

若要将数据复制到Azure AI 搜索,支持以下属性:

属性 描述 必需
类型 数据集的 type 属性必须设置为:AzureSearchIndex 是
indexName (索引名称) 搜索索引的名称。 该服务不会创建索引。 索引必须存在于Azure AI 搜索中。 是

示例:

{
    "name": "AzureSearchIndexDataset",
    "properties": {
        "type": "AzureSearchIndex",
        "typeProperties" : {
            "indexName": "products"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure AI Search linked service name>",
            "type": "LinkedServiceReference"
        }
   }
}

复制活动 属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供Azure AI 搜索源支持的属性列表。

Azure AI 搜索 作为目标接收器

若要将数据复制到 Azure AI 搜索,请将复制活动中的源类型设置为 AzureSearchIndexSink。 复制活动中的 目标连接 部分支持以下属性:

属性 描述 必需
类型 复制活动源的 type 属性必须设置为:AzureSearchIndexSink 是
writeBehavior 指定索引中已存在文档时要合并还是替换该文档。 请参阅 WriteBehavior 属性。

允许的值为:Merge(默认)和Upload。
否
writeBatchSize 缓冲区大小达到 writeBatchSize 时,会将数据上传到搜索索引。 有关详细信息,请参阅 WriteBatchSize 属性。

允许的值为:整数 1 到 1,000;默认值为 1000。
否
最大并发连接数 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 否

WriteBehavior 属性

AzureSearchSink 在写入数据时执行 upsert 操作。 换句话说,在编写文档时,如果文档键已存在于搜索索引中,Azure AI 搜索更新现有文档,而不是引发冲突异常。

AzureSearchSink(通过使用 AzureSearch SDK)提供以下两种 upsert 行为:

  • 合并:合并新文档和现有文档中的所有列。 对于新文档中具有 null 值的列,会在现有文档列中保留该值。
  • 上传:新文档替换现有文档。 对于新文档中未指定的列,无论现有文档中是否有非 null 值,该值都设置为 null。

默认行为是合并。

WriteBatchSize 属性

Azure AI 搜索 服务支持以批处理的方式编写文档。 每批次可包含 1 到 1,000 个操作。 每个操作处理一个文档以执行上传/合并操作。

示例:

"activities":[
    {
        "name": "CopyToAzureSearch",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure AI Search output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureSearchIndexSink",
                "writeBehavior": "Merge"
            }
        }
    }
]

数据类型支持

下表指定是否支持Azure AI 搜索数据类型。

Azure AI 搜索数据类型 支持在 Azure AI 搜索 接收器中
字符串 Y
Int32 Y
Int64 Y
双精度 Y
布尔 Y
数据时间偏移 Y
字符串数组 N
GeographyPoint N

目前不支持其他数据类型,例如 ComplexType。 有关支持的 Azure AI 搜索 数据类型的完整列表,请参阅 支持的数据类型(Azure AI 搜索)。

为了获取复制活动支持的数据源和汇集列表,请参阅支持的数据存储。