建立或更新資料來源 (預覽 REST API)
適用於:2023-07-01-Preview。 不再支援此版本。 立即 升級至較新版本。
重要
2023-07-01-Preview (無變更)。
2021-04-30-Preview 新增索引器連線至其他 Azure 資源的受控識別支援:
- 「認證」 接受 Azure 資源識別碼做為值,前提是搜尋服務是在受控識別下執行,而 Azure 角色指派會將讀取許可權授與數據。
- 「身分識別」 接受使用者指派的受控識別。 此屬性是數據連線的第一層。 它也在 「encryptionKey」 中擷取 Azure Key Vault 中客戶管理的密鑰。
- Azure 檔案服務 支援處於預覽狀態。 使用預覽 API 從這個數據源編製索引。
2020-06-30-Preview 新增:
- “dataDeletionDetectionPolicy” 接受 Blob 索引器的 “NativeBlobSoftDeleteDeletionDetectionPolicy”。
- 適用於 MySQL 的 Azure 資料庫 支援處於預覽狀態。 使用預覽 API 從這個數據源編製索引。
- Cosmos DB MongoDB API 和 Gremlin API 支援處於預覽狀態。 使用預覽 API 從這個數據源編製索引。
在 Azure AI 搜尋中,數據源會與 索引器搭配使用,提供目標索引的隨選或排程數據重新整理連線資訊,從 支援的數據源提取數據。
您可以在建立要求上使用 POST 或 PUT。 對於任一個,要求主體會提供物件定義。
POST https://[service name].search.windows.net/datasources?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
針對更新要求,請使用 PUT 並在 URI 上指定索引器名稱。
PUT https://[service name].search.windows.net/datasources/[data source name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
所有服務要求都需要 HTTPS。 如果物件不存在,則會建立它。 如果已經存在,則會使用新的定義覆寫它。
注意
數據源存在之後,您無法在更新要求上變更 type 屬性。 相反地,您應該使用您想要的類型來建立新的數據源。
URI 參數
參數 | 描述 |
---|---|
服務名稱 | 必填。 將此設定為搜尋服務的唯一用戶定義名稱。 |
數據源名稱 | 如果使用 PUT,則為 URI 的必要專案。 名稱必須是小寫、以字母或數字開頭、沒有斜線或點,且少於 128 個字元。 使用字母或數字啟動名稱之後,只要虛線不連續,名稱的其餘部分就可以包含任何字母、數位和破折號。 |
api-version | 必填。 如需更多版本,請參閱 API 版本。 |
要求標頭
下表描述必要和選擇性的要求標頭。
領域 | 描述 |
---|---|
Content-Type | 必填。 將此設定為 application/json |
api-key | 如果您使用 Azure 角色,而且要求會提供持有人令牌,則為選擇性,否則需要密鑰。 api-key 是唯一的系統產生字串,可驗證對搜尋服務的要求。 建立要求必須包含設定為系統管理密鑰的 api-key 標頭(而不是查詢密鑰)。 如需詳細資訊,請參閱使用密鑰驗證 連線到 Azure AI 搜尋服務 |
要求本文
要求的本文包含數據源定義,其中包括數據源類型、讀取數據的認證,以及選擇性的數據變更偵測和數據刪除偵測原則,這些原則可用來在搭配定期排程的索引器使用時,有效識別數據源中已變更或刪除的數據
下列 JSON 是定義主要部分的高階表示法。
{
"name" : (optional on PUT; required on POST) "Name of the data source",
"description" : (optional) "Anything you want, or nothing at all",
"type" : (required) "Must be a supported data source",
"credentials" : (required) { "connectionString" : "Connection string for your data source" },
"container" : (required) { "name" : "Name of the table, collection, or blob container you wish to index" },
"dataChangeDetectionPolicy" : (optional) {See below for details },
"dataDeletionDetectionPolicy" : (optional) {See below for details },
"identity": (optional) {Sets the Resource ID of a managed identity. See below for details },
"encryptionKey":(optional) {
"keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
"keyVaultKeyVersion": "Version of the Azure Key Vault key",
"keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key.",
"identity": "(Resource ID of a user-assigned managed identity, used for connecting to key vault)",
"accessCredentials": (Credentials for connecting to key vault. Omit if using a managed identity) {
"applicationId": "Azure AD Application ID that has access permissions to the key vault",
"applicationSecret": "Authentication key of the specified Azure AD application)"}
}
}
要求包含下列屬性:
財產 | 描述 |
---|---|
名字 | 必填。 數據源的名稱。 數據源名稱只能包含小寫字母、數位或破折號,不能以破折號開頭或結尾,而且限制為128個字元。 |
描述 | 選擇性描述。 |
類型 | 必填。 必須是其中一個支持的數據源類型 adlsgen2 :Azure Data Lake Storage Gen2azureblob Azure Blob 記憶體azurefiles Azure 檔案記憶體azuresql Azure SQL Databaseazuretable Azure Cosmos DB SQL API的 Azure 數據表記憶體cosmosdb MongoDB APIGremlin APImysql 適用於 MySQL 的 Azure 資料庫 |
認證 | 必填。 包含指定如何連線的 connectionString 屬性。 |
容器 | 必填。 指定要編製索引之數據的容器、集合、數據表或檢視表。 |
dataChangeDetectionPolicy | 自選。 指定數據平臺提供的機制,以識別已變更的數據項。 |
dataDeletionDetectionPolicy | 自選。 識別數據平臺刪除數據的方式。 |
encryptionKey | 自選。 用於透過 Azure Key Vault 中 客戶管理的加密金鑰 (CMK),來額外加密數據源認證。 適用於在 2019-01-01-01 上建立或之後建立的可計費搜尋服務。 |
禁用 | 自選。 布爾值,指出索引器是否處於停用狀態建立,這可防止索引器立即執行。 False 預設為 False。 |
身份 | 自選。 其中包含類型 #Microsoft.Azure.Search.DataUserAssignedIdentity 的 userAssignedIdentity ,並指定外部資源的 用戶指派的受控識別。 此屬性取決於 credentials 每個數據源類型的受控識別連線具有正確格式的連接字串(資源識別符)。
如果 identity 屬性為 null,則會使用系統管理的 屬性建立與資源標識符的連線。
如果此屬性指派給類型 #Microsoft.Azure.Search.DataNoneIdentity ,則會清除先前指定的任何明確識別。 |
回應
若要求成功:如果已建立新的數據源,則建立 201;如果現有數據源已更新,則為 204 沒有內容。
例子
範例:Azure 角色和系統指派的受控識別
如果您的搜尋服務具有系統指派的受控識別和角色指派,數據源聯機可以是記憶體帳戶的唯一資源標識符。
{
"name": "azure-blob-ds",
"description": "a description of the blob data",
"type": "azureblob",
"subtype": null,
"credentials": {
"connectionString": "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;"
},
"container": {
"name": "mycontainer"
},
"dataChangeDetectionPolicy": null,
"dataDeletionDetectionPolicy": null,
}
範例:Azure 角色和使用者指派的受控識別(預覽版)
此範例示範具有使用者指派受控識別之搜尋服務的 Azure AD 驗證連線。
{
"name": "azure-blob-ds",
"description": "a description of the blob data",
"type": "azureblob",
"subtype": null,
"credentials": {
"connectionString": "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;"
},
"container": {
"name": "mycontainer"
},
"dataChangeDetectionPolicy": null,
"dataDeletionDetectionPolicy": null,
"identity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[user identity name]"
}
}
範例:具有變更偵測的 Azure SQL(高水位線變更偵測原則)
{
"name" : "asqldatasource",
"description" : "a description",
"type" : "azuresql",
"credentials" : { "connectionString" : "Server=tcp:....database.windows.net,1433;Database=...;User ID=...;Password=...;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" },
"container" : { "name" : "sometable" },
"dataChangeDetectionPolicy" : { "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy", "highWaterMarkColumnName" : "RowVersion" }
}
範例:具有變更偵測的 Azure SQL (SQL 整合式變更追蹤原則)
{
"name" : "asqldatasource",
"description" : "a description",
"type" : "azuresql",
"credentials" : { "connectionString" : "Server=tcp:....database.windows.net,1433;Database=...;User ID=...;Password=...;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" },
"container" : { "name" : "sometable" },
"dataChangeDetectionPolicy" : { "@odata.type" : "#Microsoft.Azure.Search.SqlIntegratedChangeTrackingPolicy" }
}
範例:具有變更偵測與刪除偵測的 Azure SQL
回想一下,刪除偵測的屬性是 “softDeleteColumnName” 和 “softDeleteMarkerValue”。
{
"name" : "asqldatasource",
"description" : "a description",
"type" : "azuresql",
"credentials" : { "connectionString" : "Server=tcp:....database.windows.net,1433;Database=...;User ID=...;Password=...;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" },
"container" : { "name" : "sometable" },
"dataDeletionDetectionPolicy" : { "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy", "softDeleteColumnName" : "IsDeleted", "softDeleteMarkerValue" : "true" }
}
範例:僅具有必要屬性的數據源
如果您只想要針對資料的一次性復本使用資料源,則可以省略與變更和刪除偵測相關的選擇性屬性:
{
"name" : "asqldatasource",
"description" : "anything you want, or nothing at all",
"type" : "azuresql",
"credentials" : { "connectionString" : "Server=tcp:....database.windows.net,1433;Database=...;User ID=...;Password=...;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" },
"container" : { "name" : "sometable" }
}
範例:使用未變更或修訂的認證選項
如果您想要更新數據源,則不需要認證。
<unchanged>
或 <redacted>
的值可用來取代連接字串。
{
"name" : "adatasource",
"description": "a description",
"type": "azuresql",
"credentials": { "connectionString": "<unchanged>" },
"container" : { "name": "sometable" }
}
範例:加密金鑰
加密金鑰是用於其他加密的客戶自控金鑰。 如需詳細資訊,請參閱在 Azure Key Vault 中使用客戶管理的金鑰 加密。
{
"name" : "adatasource",
"description": "a description",
"type": "azuresql",
"credentials": { "connectionString": "<unchanged>" },
"container" : { "name": "sometable" },
"encryptionKey": (optional) {
"keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
"keyVaultKeyVersion": "Version of the Azure Key Vault key",
"keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
"accessCredentials": (optional, only if not using managed identity) {
"applicationId": "Azure Active Directory Application ID that was granted access permissions to your specified Azure Key Vault",
"applicationSecret": "Authentication key of the specified Azure AD application)"}
}
}
範例:搜尋服務具有使用者指派受控識別的加密密鑰保存庫連線
此範例省略 accessCredentials。 對於具有 使用者指派受控識別的資源, 指派給它,您可以在 encryptionKey 中指定身分識別,並使用該身分識別和 Azure 角色指派來擷取密鑰。
{
"name" : "adatasource",
"description": "a description",
"type": "azuresql",
"credentials": { "connectionString": "<unchanged>" },
"container" : { "name": "sometable" },
"encryptionKey": (optional) {
"keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
"keyVaultKeyVersion": "Version of the Azure Key Vault key",
"keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
"identity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/contoso-identity"
}
}
}
定義
連結 | 描述 |
---|---|
容器 | 指定要編製索引之數據的容器、集合、數據表或檢視表。 |
認證 | 包含 connectionString 屬性,指定索引器如何連線到 Azure 資源。 |
dataChangeDetectionPolicy | 指定數據平臺提供的機制,以識別已變更的數據。 |
dataDeletionDetectionPolicy | 指定偵測已刪除資料的機制。 |
encryptionKey | 設定與 Azure Key Vault 的連線,以進行客戶管理的加密。 |
容器
指定要編製索引之數據的容器、集合、數據表或檢視表。
屬性 | 描述 |
---|---|
名字 | 必填。 針對 Azure Cosmos DB,指定 SQL API 集合。 針對 Azure Blob 記憶體,指定記憶體容器。 針對 Azure SQL,指定資料表或檢視表。 您可以使用架構限定名稱,例如 [dbo].[mytable] 。 針對 Azure 資料表記憶體,指定資料表的名稱。 |
查詢 | 自選。 針對 Azure Cosmos DB,可讓您指定查詢,將任意 JSON 檔版面配置扁平化為 Azure AI 搜尋可編製索引的一般架構。 針對 Azure Blob 記憶體,可讓您在 Blob 容器內指定虛擬資料夾。 例如,針對 blob 路徑 mycontainer/documents/blob.pdf ,documents 可用來作為虛擬資料夾。 針對 Azure 資料表記憶體,可讓您指定查詢,以篩選要匯入的數據列集。 針對 Azure SQL,不支持查詢(請改用檢視)。 |
憑據
包含 「connectionString」 屬性,指定索引器如何連接到 Azure 資源。
屬性 | 描述 |
---|---|
connectionString | 必填。 指定索引器數據源的連接。 如果您要更新數據源定義,則不需要連接字串。 這些值 <unchanged> 或 <redacted> 可用來取代實際的連接字串。 對於使用金鑰或登入認證進行驗證的連接,這些值會顯示在連接字串中。 連接字串的格式取決於數據源類型:針對 Azure SQL Database,這是一般的 SQL Server 連接字串。 如果您使用 Azure 入口網站來擷取連接字串,請選擇 [ ADO.NET connection string ] 選項。
針對 Azure Cosmos DB,連接字串的格式必須如下: "AccountEndpoint=https://[your account name].documents.azure.com;AccountKey=[your account key];Database=[your database id]" 。 所有值都是必要值。 您可以在 Azure 入口網站中找到它們,。 如果您使用 受控識別來驗證,則可以省略連線上的認證。 |
如需使用受控識別進行驗證的連線,連接字串會指定 Azure 資源識別元(請參閱下列連接字串格式的連結:Azure 記憶體、Cosmos DB、SQL Database)。
限定於外部數據源的角色指派會判斷索引器是否可以連線,而且搜尋服務必須設定為在 Azure Active Directory 中以受信任的服務身分執行。
如果同時指定 「身分識別」屬性,則會使用 「身分識別」屬性所提供的搜尋服務使用者指派的受控識別來建立連線。 否則,如果未指定「身分識別」或 Null,則聯機會透過系統管理的身分識別。
dataChangeDetectionPolicy
指定數據平臺提供的機制,以識別已變更的數據。 支持的原則會根據數據源類型而有所不同。
屬性 | 描述 |
---|---|
dataChangeDetectionPolicy | 自選。 有效的原則包括 HighWatermarkChangeDetectionPolicy 或 SqlIntegratedChangeDetectionPolicy 。
HighWatermarkChangeDetectionPolicy 相依於現有數據行或屬性,該數據行或屬性會與其他更新一起更新(所有插入都會導致浮浮浮水印數據行更新),且值變更較高。
SqlIntegratedChangeDetectionPolicy 可用來參考 SQL Server 中的原生變更偵測功能。 此原則只能與數據表搭配使用;它不能與檢視搭配使用。 您必須先啟用所使用資料表的變更追蹤,才能使用此原則。 如需指示,請參閱 啟用和停用變更追蹤。 |
highWaterMarkColumnName |
HighWatermarkChangeDetectionPolicy 的必要專案。 針對 Cosmos DB,數據行必須 _ts 屬性。 針對 Azure SQL,建議使用索引 rowversion 數據行。 針對 Azure 記憶體,變更偵測是使用 lastModified 值內建的,不需要設定 dataChangeDetectionPolicy。 |
dataDeletionDetectionPolicy
指定數據平台為識別已刪除資料所提供的機制。 支持的原則會根據數據源類型而有所不同。
屬性 | 描述 |
---|---|
dataDeletionDetectionPolicy | 自選。 有效值為 SoftDeleteColumnDeletionDetectionPolicy 或 NativeBlobSoftDeleteDeletionDetectionPolicy (請參閱 原生 Blob 虛刪除 (預覽)]。 目前,唯一可用的原則是SoftDeleteColumnDeletionDetectionPolicy ,它會根據數據源中「虛刪除」數據行或屬性的值來識別已刪除的專案。 |
softDeleteColumnName” | 必填。 數據來源中的數據行名稱,提供指定數據列刪除狀態的值。 例如,您可以建立名為 「IsDeleted」 的資料行。 僅支援具有字串、整數或布爾值的數據行。 |
softDeleteMarkerValue | 必填。 虛刪除資料行的值。 當做 softDeleteMarkerValue 使用的值必須是字串,即使對應的數據行保存整數或布爾值也一樣。 例如,如果資料來源中顯示的值為 1,請使用 「1」 作為 softDeleteMarkerValue 。 如果索引器從虛刪除數據行讀取這個值,它會從搜尋索引中刪除對應的搜尋檔。 |
encryptionKey
設定與 Azure Key Vault 的連線,以取得補充 客戶管理的加密密鑰 (CMK)。 使用客戶管理的金鑰加密不適用於免費服務。 針對可計費的服務,它僅適用於在 2019-01-01 之後建立的搜尋服務。
必須驗證金鑰保存庫的連線。 您可以針對此目的使用 「accessCredentials」 或受控識別。
受控識別可以是系統或使用者指派(預覽)。 如果搜尋服務同時具有系統指派的受控識別,以及授與密鑰保存庫讀取許可權的角色指派,您可以省略「身分識別」和「accessCredentials」,而要求將會使用受控識別進行驗證。 如果搜尋服務具有使用者指派的身分識別和角色指派,請將 “identity” 屬性設定為該身分識別的資源標識符。
屬性 | 描述 |
---|---|
keyVaultKeyName | 必填。 用於加密的 Azure Key Vault 金鑰名稱。 |
keyVaultKeyVersion | 必填。 Azure Key Vault 金鑰的版本。 |
keyVaultUri | 必填。 提供密鑰的 Azure Key Vault URI(也稱為 DNS 名稱)。 範例 URI 可能會 https://my-keyvault-name.vault.azure.net 。 |
accessCredentials | 如果您使用受控識別,請省略 。 否則,accessCredentials 的屬性包括 applicationId (具有您指定 Azure Key Vault 訪問許可權的 Azure Active Directory 應用程式識別符),以及 applicationSecret (指定 Azure AD 應用程式的驗證密鑰)。 |
身份 | 除非您針對 Azure Key Vault 的搜尋服務連線使用使用者指派的受控識別,否則為選擇性。 格式為 "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" 。 |