Skapa eller uppdatera datakälla (förhandsversion av REST API)

gäller för: 2023-07-01-Preview. Den här versionen stöds inte längre. Uppgradera omedelbart till en nyare version.

Viktig

2023-07-01-Preview (inga ändringar).

2021-04-30-Preview lägger till stöd för hanterad identitet för indexerareanslutningar till andra Azure-resurser:

  • "autentiseringsuppgifter" accepterar ett Azure-resurs-ID som ett värde, förutsatt att söktjänsten körs under en hanterad identitet och Azure-rolltilldelningar ger läsåtkomst till data.
  • "identitet" accepterar en användartilldelad hanterad identitet. Den här egenskapen är på första nivån för dataanslutningar. Den finns också under "encryptionKey" för att hämta en kundhanterad nyckel i Azure Key Vault.
  • stöd för Azure Files finns i förhandsversionen. Använd ett förhandsversions-API för att indexeras från den här datakällan.

2020-06-30-Preview lägger till:

  • "dataDeletionDetectionPolicy" accepterar "NativeBlobSoftDeleteDeletionDetectionPolicy" för blobindexerare.
  • Stöd för Azure Database for MySQL finns i förhandsversion. Använd ett förhandsversions-API för att indexeras från den här datakällan.
  • Cosmos DB MongoDB API och Gremlin API stöd finns i förhandsversion. Använd ett förhandsversions-API för att indexeras från den här datakällan.

I Azure AI Search används en datakälla med indexerare, som tillhandahåller anslutningsinformation för på begäran eller schemalagd datauppdatering av ett målindex, hämtar data från datakällor som stöds.

Du kan använda POST eller PUT på en create-begäran. För någon av dem innehåller begärandetexten objektdefinitionen.

POST https://[service name].search.windows.net/datasources?api-version=[api-version]  
    Content-Type: application/json  
    api-key: [admin key]  

För uppdateringsbegäranden använder du PUT och anger indexerarens namn på URI:n.

PUT https://[service name].search.windows.net/datasources/[data source name]?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]    

HTTPS krävs för alla tjänstbegäranden. Om objektet inte finns skapas det. Om den redan finns skrivs den över med den nya definitionen.

Not

När en datakälla finns kan du inte ändra typegenskapen för en uppdateringsbegäran. I stället bör du skapa en ny datakälla med den typ du vill använda.

URI-parametrar

Parameter Beskrivning
tjänstnamn Krävs. Ange det här till det unika, användardefinierade namnet på söktjänsten.
namn på datakälla Krävs på URI:n om du använder PUT. Namnet måste vara gemener, börja med en bokstav eller siffra, ha inga snedstreck eller punkter och vara färre än 128 tecken. När du har startat namnet med en bokstav eller siffra kan resten av namnet innehålla valfri bokstav, siffra och bindestreck, så länge strecken inte är i följd.
api-version Krävs. Se API-versioner för fler versioner.

Begärandehuvuden

I följande tabell beskrivs de obligatoriska och valfria begäranderubrikerna.

Fält Beskrivning
Innehållstyp Krävs. Ställ in på application/json
api-key Valfritt om du använder Azure-roller och en ägartoken anges i begäran, annars krävs en nyckel. En API-nyckel är en unik, systemgenererad sträng som autentiserar begäran till din söktjänst. Skapa begäranden måste innehålla ett api-key huvud inställt på administratörsnyckeln (till skillnad från en frågenyckel). Mer information finns i Anslut till Azure AI Search med hjälp av nyckelautentisering.

Begärandetext

Brödtexten i begäran innehåller en definition av datakällan, som innehåller typen av datakälla, autentiseringsuppgifter för att läsa data, samt en valfri princip för identifiering av dataändringar och identifiering av databorttagning som används för att effektivt identifiera ändrade eller borttagna data i datakällan när de används med en periodiskt schemalagd indexerare

Följande JSON är en högnivårepresentation av de viktigaste delarna i definitionen.

{   
    "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)"}
      }
} 

Begäran innehåller följande egenskaper:

Egenskap Beskrivning
Namn Krävs. Namnet på datakällan. Ett datakällans namn får bara innehålla gemener, siffror eller bindestreck, kan inte starta eller sluta med bindestreck och är begränsat till 128 tecken.
beskrivning En valfri beskrivning.
typ Krävs. Måste vara en av de typer av datakällor som stöds:

adlsgen2 för Azure Data Lake Storage Gen2
azureblob för Azure Blob Storage
azurefiles för Azure File Storage
azuresql för Azure SQL Database
azuretable för Azure Table Storage
cosmosdb för Azure Cosmos DB SQL API, MongoDB API, Gremlin API
mysql för Azure Database for MySQL
autentiseringsuppgifter Krävs. Innehåller en connectionString egenskap som anger hur du ansluter.
behållare Krävs. Anger containern, samlingen, tabellen eller vyn som innehåller de data som ska indexeras.
dataChangeDetectionPolicy Valfri. Anger den mekanism som tillhandahålls av dataplattformen för att identifiera ändrade dataobjekt.
dataDeletionDetectionPolicy Valfri. Identifierar hur dataplattformen tar bort data.
encryptionKey Valfri. Används för ytterligare kryptering av autentiseringsuppgifter för datakällor via kundhanterade krypteringsnycklar (CMK) i Azure Key Vault. Tillgänglig för fakturerbara söktjänster som skapats på eller efter 2019-01-01.
handikappad Valfri. Booleskt värde som anger om indexeraren skapas i ett inaktiverat tillstånd, vilket förhindrar att den körs omedelbart. Falskt som standard.
identitet Valfri. Den innehåller en userAssignedIdentity av typen #Microsoft.Azure.Search.DataUserAssignedIdentity och anger den användartilldelade hanterade identiteten för den externa resursen. Den här egenskapen beror på credentials har anslutningssträngen i rätt format (ett resurs-ID) för hanterade identitetsanslutningar för varje datakällatyp.

Om egenskapen identity är null görs anslutningen till ett resurs-ID med hjälp av den systemhanterade egenskapen.

Om den här egenskapen har tilldelats till typen #Microsoft.Azure.Search.DataNoneIdentityrensas alla explicita identiteter som angavs tidigare.

Svar

För en lyckad begäran: 201 Skapades om en ny datakälla skapades och 204 Inget innehåll om en befintlig datakälla uppdaterades.

Exempel

Exempel: Azure-roller och en systemtilldelad hanterad identitet

Om söktjänsten har en systemtilldelad hanterad identitet och en rolltilldelning kan datakällans anslutning vara det unika resurs-ID:t för ditt lagringskonto.

{
    "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,
  }

Exempel: Azure-roller och en användartilldelad hanterad identitet (förhandsversion)

Det här exemplet visar en autentiserad Azure AD-anslutning för en söktjänst som har en användartilldelad hanterad identitet.

{
    "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]"
    }
  }

exempel: Azure SQL med ändringsidentifiering (princip för ändringsidentifiering med hög vattenstämpel)

{   
    "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" }
}  

Exempel: Azure SQL med ändringsidentifiering (SQL Integrated Change Tracking Policy)

{   
    "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" }
}  

Exempel: Azure SQL med ändringsidentifiering med borttagningsidentifiering

Kom ihåg att egenskaperna för borttagningsidentifiering är "softDeleteColumnName" och "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" }  
}  

Exempel: Datakälla med nödvändiga egenskaper

Valfria egenskaper som rör identifiering av ändringar och borttagning kan utelämnas om du bara tänker använda datakällan för engångskopiering av data:

{   
    "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" }  
}   

Exempel: Använd alternativet för oförändrade eller redigerade autentiseringsuppgifter

Om du tänker uppdatera datakällan krävs inte autentiseringsuppgifterna. Värdena <unchanged> eller <redacted> kan användas i stället för anslutningssträngen.

{
    "name" : "adatasource",
    "description": "a description",
    "type": "azuresql",
    "credentials": { "connectionString": "<unchanged>" },
    "container" : { "name": "sometable" }
}

exempel: Krypteringsnycklar

Krypteringsnycklar är kundhanterade nycklar som används för ytterligare kryptering. Mer information finns i Kryptering med kundhanterade nycklar i 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)"}
      }
}

Exempel: Kryptering av nyckelvalvanslutningar efter söktjänster med en användartilldelad hanterad identitet

Det här exemplet utelämnar accessCredentials. För en resurs som har en användartilldelad hanterad identitet tilldelad till den kan du ange identiteten i encryptionKey och hämta nyckeln med hjälp av identitets- och Azure-rolltilldelningarna.

{
    "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"
        }
    }
}

Definitioner

Länk Beskrivning
container Anger containern, samlingen, tabellen eller vyn som innehåller de data som ska indexeras.
autentiseringsuppgifter Innehåller en connectionString egenskap som anger hur en indexerare ansluter till en Azure-resurs.
dataChangeDetectionPolicy Anger den mekanism som tillhandahålls av dataplattformen för att identifiera ändrade data.
dataDeletionDetectionPolicy Anger mekanismen för att identifiera borttagna data.
encryptionKey Konfigurerar en anslutning till Azure Key Vault för kundhanterad kryptering.

behållare

Anger containern, samlingen, tabellen eller vyn som innehåller de data som ska indexeras.

Attribut Beskrivning
Namn Krävs. För Azure Cosmos DB anger sql API-samlingen. För Azure Blob Storage anger lagringscontainern. För Azure SQL anger du tabellen eller vyn. Du kan använda schemakvalificerade namn, till exempel [dbo].[mytable]. För Azure Table Storage anger du namnet på tabellen.
fråga Valfri. För Azure Cosmos DB kan du ange en fråga som förenklar en godtycklig JSON-dokumentlayout till ett platt schema som Azure AI Search kan indexera. För Azure Blob Storage kan du ange en virtuell mapp i blobcontainern. För blobsökväg mycontainer/documents/blob.pdfkan documents till exempel användas som virtuell mapp. För Azure Table Storage kan du ange en fråga som filtrerar uppsättningen rader som ska importeras. För Azure SQL stöds inte frågor (använd vyer i stället).

Autentiseringsuppgifter

Innehåller egenskapen "connectionString" som anger hur en indexerare ansluter till en Azure-resurs.

Attribut Beskrivning
connectionString Krävs. Anger en anslutning till en indexerares datakälla. Om du uppdaterar datakällans definition krävs inte anslutningssträngen. Värdena <unchanged> eller <redacted> kan användas i stället för den faktiska anslutningssträngen.

För anslutningar som autentiseras med nycklar eller inloggningsuppgifter visas dessa värden i anslutningssträngen. Formatet för anslutningssträngen beror på datakälltypen:

För Azure SQL Database är detta den vanliga SQL Server-anslutningssträngen. Om du använder Azure-portalen för att hämta anslutningssträngen väljer du alternativet ADO.NET connection string.

För Azure Cosmos DB måste anslutningssträngen ha följande format: "AccountEndpoint=https://[your account name].documents.azure.com;AccountKey=[your account key];Database=[your database id]". Alla värden krävs. Du hittar dem i Azure-portalen.

Om du använder en hanterad identitet för att autentiserakan du utelämna autentiseringsuppgifter för anslutningen.

För anslutningar som autentiseras med en hanterad identitet anger anslutningssträngen Azure-resurs-ID :t (se dessa länkar för anslutningssträngformat: Azure Storage, Cosmos DB,SQL Database).

Rolltilldelningar som är begränsade till den externa datakällan avgör om indexeraren kan ansluta och söktjänsten måste konfigureras för att köras som en betrodd tjänst i Azure Active Directory.

Om egenskapen "identitet" också anges görs anslutningen med hjälp av söktjänstens användartilldelade hanterade identitet som tillhandahålls av egenskapen "identitet". Om "identiteten" annars är ospecificerad eller null sker anslutningen via den systemhanterade identiteten.

dataChangeDetectionPolicy

Anger den mekanism som tillhandahålls av dataplattformen för att identifiera ändrade data. Principer som stöds varierar beroende på datakällans typ.

Attribut Beskrivning
dataChangeDetectionPolicy Valfri. Giltiga principer omfattar HighWatermarkChangeDetectionPolicy eller SqlIntegratedChangeDetectionPolicy.

HighWatermarkChangeDetectionPolicy beror på en befintlig kolumn eller egenskap som uppdateras tillsammans med andra uppdateringar (alla infogningar resulterar i en uppdatering av vattenstämpelkolumnen) och värdeändringen är högre.

SqlIntegratedChangeDetectionPolicy används för att referera till de inbyggda funktionerna för ändringsidentifiering i SQL Server. Den här principen kan bara användas med tabeller. Det kan inte användas med vyer. Du måste aktivera ändringsspårning för tabellen du använder innan du kan använda den här principen. Anvisningar finns i Aktivera och inaktivera ändringsspårning.
highWaterMarkColumnName Krävs för HighWatermarkChangeDetectionPolicy. För Cosmos DB måste kolumnen vara _ts egenskap. För Azure SQL rekommenderas en indexerad rowversion kolumn. För Azure Storage är ändringsidentifiering inbyggd med hjälp av lastModified-värden, vilket eliminerar alla behov av att ange dataChangeDetectionPolicy.

dataDeletionDetectionPolicy

Anger den mekanism som tillhandahålls av dataplattformen för att identifiera borttagna data. Principer som stöds varierar beroende på datakällans typ.

Attribut Beskrivning
dataDeletionDetectionPolicy Valfri. Giltiga värden är SoftDeleteColumnDeletionDetectionPolicy eller NativeBlobSoftDeleteDeletionDetectionPolicy (se intern mjuk borttagning av blobbar (förhandsversion)).

För närvarande är den enda allmänt tillgängliga principenSoftDeleteColumnDeletionDetectionPolicy, som identifierar borttagna objekt baserat på värdet för en kolumn eller egenskap för mjuk borttagning i datakällan.

softDeleteColumnName" Krävs. Namnet på en kolumn i datakällan som anger en rads borttagningsstatus. Du kan till exempel skapa en kolumn med namnet "IsDeleted". Endast kolumner med sträng-, heltals- eller booleska värden stöds.
softDeleteMarkerValue Krävs. Värdet för kolumnen mjuk borttagning. Värdet som används som softDeleteMarkerValue måste vara en sträng, även om motsvarande kolumn innehåller heltal eller booleska värden. Om till exempel värdet som visas i datakällan är 1 använder du "1" som softDeleteMarkerValue. Om indexeraren läser det här värdet från kolumnen för mjuk borttagning tas motsvarande sökdokument bort från sökindexet.

encryptionKey

Konfigurerar en anslutning till Azure Key Vault för kompletterande kundhanterade krypteringsnycklar (CMK). Kryptering med kundhanterade nycklar är inte tillgängligt för kostnadsfria tjänster. För fakturerbara tjänster är den endast tillgänglig för söktjänster som skapats på eller efter 2019-01-01.

En anslutning till nyckelvalvet måste autentiseras. Du kan använda antingen "accessCredentials" eller en hanterad identitet för detta ändamål.

Hanterade identiteter kan vara system- eller användartilldelade (förhandsversion). Om söktjänsten har både en systemtilldelad hanterad identitet och en rolltilldelning som ger läsåtkomst till nyckelvalvet kan du utelämna både "identitet" och "accessCredentials", och begäran autentiseras med hjälp av den hanterade identiteten. Om söktjänsten har användartilldelad identitet och rolltilldelning anger du egenskapen "identitet" till resurs-ID:t för den identiteten.

Attribut Beskrivning
keyVaultKeyName Krävs. Namnet på Azure Key Vault-nyckeln som används för kryptering.
keyVaultKeyVersion Krävs. Version av Azure Key Vault-nyckeln.
keyVaultUri Krävs. URI för Azure Key Vault (kallas även DNS-namn) som tillhandahåller nyckeln. Ett exempel på en URI kan vara https://my-keyvault-name.vault.azure.net.
accessCredentials Utelämna om du använder en hanterad identitet. Annars innehåller egenskaperna för accessCredentialsapplicationId (ett Azure Active Directory-program-ID som har åtkomstbehörighet till ditt angivna Azure Key Vault) och applicationSecret (autentiseringsnyckeln för det angivna Azure AD-programmet).
identitet Valfritt om du inte använder en användartilldelad hanterad identitet för söktjänstens anslutning till Azure Key Vault. Formatet är "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Se även