Veri Kaynağı Oluşturma (Azure AI Arama REST API'si)
Azure AI Search'te bir veri kaynağı dizin oluşturucularla birlikte kullanılır ve hedef dizinin isteğe bağlı veya zamanlanmış veri yenilemesi için bağlantı bilgilerini sağlar ve desteklenen Azure veri kaynaklarından veri çeker.
İstekte POST veya PUT kullanabilirsiniz. her ikisinde de, istek gövdesindeki JSON belgesi nesne tanımını sağlar.
POST https://[service name].search.windows.net/datasources?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Alternatif olarak PUT kullanabilir ve URI'de adı belirtebilirsiniz.
PUT https://[service name].search.windows.net/datasources/[data source name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Tüm hizmet istekleri için HTTPS gereklidir. Nesne yoksa oluşturulur. Zaten varsa, yeni tanıma güncelleştirilir.
Not
Oluşturabileceğiniz dizin sayısı üst sınırı fiyatlandırma katmanına göre değişir. Daha fazla bilgi için bkz . Hizmet sınırları.
URI Parametreleri
Parametre | Açıklama |
---|---|
hizmet adı | Gereklidir. Bunu arama hizmetinizin benzersiz, kullanıcı tanımlı adı olarak ayarlayın. |
veri kaynağı adı | PUT kullanılıyorsa URI'de gereklidir. Ad küçük harf olmalı, harf veya sayı ile başlamalıdır, eğik çizgi veya nokta içermemelidir ve 128 karakterden az olmalıdır. Ad bir harf veya sayı ile başlamalıdır, ancak tireler ardışık kalmadıkları sürece adın kalan kısmı herhangi bir harf, sayı ve kısa çizgi içerebilir. |
api-sürümü | Gereklidir. Desteklenen sürümlerin listesi için bkz. API sürümleri. |
İstek Üst Bilgileri
Aşağıdaki tabloda gerekli ve isteğe bağlı istek üst bilgileri açıklanmaktadır.
Alanlar | Description |
---|---|
İçerik Türü | Gereklidir. Bunu olarak ayarlayın application/json |
api-key |
İsteğe bağlı olarak Azure rollerini kullanıyorsanız ve istekte taşıyıcı belirteci sağlanıyorsa bir anahtar gereklidir. Oluşturma istekleri, yönetici anahtarınıza ayarlanmış bir api-key üst bilgi içermelidir (sorgu anahtarının aksine). Ayrıntılar için bkz. Anahtar kimlik doğrulamasını kullanarak Azure AI Search'e bağlanma . |
İstek Gövdesi
İsteğin gövdesi, veri kaynağının türünü, verileri okumak için kimlik bilgilerini ve düzenli aralıklarla zamanlanmış bir dizin oluşturucuyla kullanıldığında veri kaynağındaki değiştirilmiş veya silinmiş verileri verimli bir şekilde tanımlamak için kullanılan isteğe bağlı bir veri değişikliği algılama ve veri silme algılama ilkelerini içeren bir veri kaynağı tanımı içerir.
Aşağıdaki JSON, tanımın ana bölümlerinin üst düzey bir gösterimidir.
{
"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": {
"name": "Name of the table, view, collection, or blob container you wish to index",
"query": (optional)
},
"dataChangeDetectionPolicy" : (optional) {See below for details },
"dataDeletionDetectionPolicy" : (optional) {See below for details },
"encryptionKey":(optional) { }
}
İstek aşağıdaki özellikleri içerir:
Özellik | Açıklama |
---|---|
name | Gereklidir. Veri kaynağının adı. Veri kaynağı adı yalnızca küçük harf, rakam veya kısa çizgi içermelidir, tirelerle başlayamaz veya bitemez ve 128 karakterle sınırlıdır. |
açıklama | İsteğe bağlı bir açıklama. |
tür | Gereklidir. Desteklenen veri kaynağı türlerinden biri olmalıdır: azuresql noSQL için Azure Cosmos DB, MongoDB için Azure Cosmos DB (önizleme) veya Apache Gremlin için Azure Cosmos DB (önizleme)azureblob için Azure VM cosmosdb üzerinde çalışan Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL Server örneği için adlsgen2 Azure Dosyalar içinAzure Tablo Depolama azurefile için Azure Data Lake Storage 2. Nesilazuretable Azure Blob Depolama için (önizleme)mysql MySQL için Azure Veritabanı (önizleme)sharepoint Microsoft 365'te SharePoint için (önizleme) |
Kimlik bilgileri | Gereklidir. Veri kaynağı için bağlantı dizesi belirten bir connectionString özellik içerir. bağlantı dizesi biçimi veri kaynağı türüne bağlıdır: Azure SQL Veritabanı için bu normal SQL Server bağlantı dizesi. bağlantı dizesi almak için Azure portal kullanıyorsanız seçeneğini belirleyin ADO.NET connection string .
Azure Cosmos DB için bağlantı dizesi şu biçimde olmalıdır: "AccountEndpoint=https://[your account name].documents.azure.com;AccountKey=[your account key];Database=[your database id]" . Tüm değerler gereklidir. Bunları Azure portal bulabilirsiniz.
Azure Blob Depolama için bağlantı dizesi biçimleri Azure AI Search'te blob dizini oluşturmayı yapılandırma bölümündeki Kimlik Bilgileri bölümünde tanımlanır. Azure Depolama, Azure SQL Veritabanı ve Azure Cosmos DB, bağlantı dizesi hesap anahtarı içermeyen yönetilen kimlik bağlantı dizesi de destekler. Yönetilen kimlik bağlantı dizesi biçimini kullanmak için, yönetilen kimlik kullanarak veri kaynağına dizin oluşturucu bağlantısı kurma yönergelerini izleyin. Veri kaynağını güncelleştiriyorsanız bağlantı dizesi gerekli değildir. veya <redacted> değerleri <unchanged> gerçek bağlantı dizesi yerine kullanılabilir. |
kapsayıcı | Gereklidir. (gerekli) ve (isteğe bağlı) özellikleri kullanılarak name dizine eklenecek verileri belirtir:name : Azure SQL için, tabloyu veya görünümü belirtir. query gibi [dbo].[mytable] şema nitelenmiş adları kullanabilirsiniz.
Azure Cosmos DB için SQL API koleksiyonunu belirtir. Azure Blob Depolama için depolama kapsayıcısını belirtir. Azure Tablo Depolama için tablonun adını belirtir. query : Azure Cosmos DB için, rastgele bir JSON belge düzenini Azure AI Search'in dizine ekleyebileceği düz bir şemaya dönüştüren bir sorgu belirtmenize olanak tanır. Azure Blob Depolama için blob kapsayıcısı içinde bir sanal klasör belirtmenize olanak tanır. Örneğin, blob yolu mycontainer/documents/blob.pdf documents için sanal klasör olarak kullanılabilir.
Azure Tablo Depolama için, içeri aktarılacak satır kümesini filtreleyen bir sorgu belirtmenize olanak tanır. Azure SQL için sorgu desteklenmez. Bunun yerine görünümleri kullanın. |
dataChangeDetectionPolicy | İsteğe bağlı. Değiştirilen veri öğelerini tanımlamak için kullanılır. Desteklenen ilkeler veri kaynağı türüne göre değişir. Geçerli ilkeler Yüksek Filigran Değişiklik Algılama İlkesi ve SQL Tümleşik Değişiklik Algılama İlkesi'dir.
Yüksek Filigran Değişiklik Algılama İlkesi, diğer güncelleştirmelerle birlikte güncelleştirilen mevcut bir sütuna veya özelliğe bağlıdır (tüm eklemeler filigran sütununda bir güncelleştirmeyle sonuçlanır) ve değerdeki değişiklik daha yüksektir. Cosmos DB veri kaynakları için özelliğini kullanmanız _ts gerekir. Azure SQL için dizinlenmiş rowversion sütun, yüksek su işareti ilkesiyle kullanmak için ideal adaydır. Azure Depolama için değişiklik algılama, lastModified değerleri kullanılarak yerleşiktir ve blob veya tablo depolama için dataChangeDetectionPolicy'yi ayarlama gereksinimini ortadan kaldırır.
SQL Tümleşik Değişiklik Algılama İlkesi, SQL Server'daki yerel değişiklik algılama özelliklerine başvurmak için kullanılır. Bu ilke yalnızca tablolarla kullanılabilir; görünümlerle kullanılamaz. Bu ilkeyi kullanabilmeniz için önce kullandığınız tablo için değişiklik izlemeyi etkinleştirmeniz gerekir. Yönergeler için bkz. Değişiklik izlemeyi etkinleştirme ve devre dışı bırakma . Dizin oluşturucuda değişiklik algılama desteği hakkında daha fazla bilgi için bkz. Bağlanma ve Azure SQL içeriği dizine ekleme. |
dataDeletionDetectionPolicy | İsteğe bağlı. Silinen veri öğelerini tanımlamak için kullanılır. Şu anda desteklenen tek ilke, silinen öğeleri veri kaynağındaki 'geçici silme' sütununun veya özelliğinin değerine göre tanımlayan Geçici Silme İlkesi'dir.
Yalnızca dize, tamsayı veya boole değerlerine sahip sütunlar desteklenir. olarak softDeleteMarkerValue kullanılan değer, karşılık gelen sütunda tamsayılar veya boole değerleri olsa bile bir dize olmalıdır. Örneğin, veri kaynağınızda görüntülenen değer 1 ise, olarak softDeleteMarkerValue "1" kullanın. |
encryptionKey | İsteğe bağlı. Bekleyen veri kaynağını Azure Key Vault yönetilen kendi anahtarlarınızla şifrelemek için kullanılır. 2019-01-01 veya sonrasında oluşturulan faturalanabilir arama hizmetleri için kullanılabilir.
Bir encryptionKey bölüm kullanıcı tanımlı keyVaultKeyName (gerekli), sistem tarafından oluşturulan keyVaultKeyVersion (gerekli) ve anahtarı sağlayan bir keyVaultUri (DNS adı olarak da adlandırılır) içerir. Örnek bir URI"https://my-keyvault-name.vault.azure.net".
İsteğe bağlı olarak, yönetilen sistem kimliği kullanıp kullanmayabileceğinizi belirtebilirsiniz accessCredentials .
accessCredentials özellikleri (applicationId belirtilen Azure Key Vault erişim izinleri verilmiş Microsoft Entra ID uygulama kimliği) ve applicationSecret (kayıtlı uygulamanın kimlik doğrulama anahtarı). Sonraki bölümdeki bir örnek söz dizimini gösterir. |
Yanıt
Başarılı bir istek için: 201 Oluşturuldu.
Örnekler
Örnek: Değişiklik algılamalı Azure SQL (Yüksek Filigran Değişiklik Algılama İlkesi)
{
"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" }
}
Örnek: Değişiklik algılama ile Azure SQL (SQL Tümleşik Değişiklik İzleme İlkesi)
{
"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" }
}
Örnek: Silme algılama ile değişiklik algılama ile Azure SQL
Silme algılama özelliklerinin ve softDeleteMarkerValue
olduğunu softDeleteColumnName
hatırlayın.
{
"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" }
}
Örnek: Yalnızca gerekli özelliklere sahip veri kaynağı
Veri kaynağını yalnızca bir kerelik veri kopyası için kullanmak istiyorsanız, değişiklik ve silme algılamayla ilgili isteğe bağlı özellikler atlanabilir:
{
"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" }
}
Örnek: Kimlik bilgilerini atlama
Veri kaynağını güncelleştirmek istiyorsanız kimlik bilgileri gerekli değildir. veya <redacted>
değerleri <unchanged>
bağlantı dizesi yerine kullanılabilir.
{
"name" : "adatasource",
"description": "a description",
"type": "azuresql",
"credentials": { "connectionString": "<unchanged>" },
"container" : { "name": "sometable" }
}
Örnek: Şifreleme anahtarları
Şifreleme anahtarları, ek şifreleme için kullanılan müşteri tarafından yönetilen anahtarlardır. Daha fazla bilgi için bkz. Azure Key Vault'de müşteri tarafından yönetilen anahtarları kullanarak şifreleme.
{
"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 system identity) {
"applicationId": "Microsoft Entra ID application ID that was granted access permissions to your specified Azure Key Vault",
"applicationSecret": "Authentication key of the registered application)"}
}
}