Criar ou atualizar fonte de dados (API REST de versão prévia)

aplica-se a: 2023-07-01-Preview. Não há mais suporte para essa versão. Atualizar imediatamente para uma versão mais recente.

Importante

2023-07-01-Preview (sem alterações).

2021-04-30-Preview adiciona suporte de identidade gerenciada para conexões de indexador a outros recursos do Azure:

  • "credenciais" aceita uma ID de recurso do Azure como um valor, desde que o serviço de pesquisa seja executado em uma identidade gerenciada e as atribuições de função do Azure concedam acesso de leitura aos dados.
  • "identidade" aceita uma identidade gerenciada atribuída pelo usuário. Essa propriedade é de primeiro nível para conexões de dados. Ele também está sob "encryptionKey" para recuperar uma chave gerenciada pelo cliente no Azure Key Vault.
  • suporte aos Arquivos do Azure está em versão prévia. Use uma API de visualização para indexar a partir dessa fonte de dados.

2020-06-30-Preview adiciona:

  • "dataDeletionDetectionPolicy" aceita "NativeBlobSoftDeleteDeletionDetectionPolicy" para indexadores de blob.
  • suporte ao Banco de Dados do Azure para MySQL está em versão prévia. Use uma API de visualização para indexar a partir dessa fonte de dados.
  • suporte à API do MongoDB do Cosmos DB e à API do Gremlin está em versão prévia. Use uma API de visualização para indexar a partir dessa fonte de dados.

No Azure AI Search, uma fonte de dados é usada com indexadores, fornecendo as informações de conexão para sob demanda ou atualização de dados agendada de um índice de destino, extraindo dados de fontes de dados com suporte.

Você pode usar POST ou PUT em uma solicitação de criação. Para qualquer um deles, o corpo da solicitação fornece a definição do objeto.

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

Para solicitações de atualização, use PUT e especifique o nome do indexador no URI.

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

O HTTPS é necessário para todas as solicitações de serviço. Se o objeto não existir, ele será criado. Se ele já existir, ele será substituído usando a nova definição.

Nota

Depois que uma fonte de dados existir, você não poderá alterar a propriedade type em uma solicitação de atualização. Em vez disso, você deve criar uma nova fonte de dados usando o tipo desejado.

Parâmetros de URI

Parâmetro Descrição
nome do serviço Necessário. Defina isso como o nome exclusivo definido pelo usuário do serviço de pesquisa.
nome da fonte de dados Necessário no URI se estiver usando PUT. O nome deve ser minúscula, começar com uma letra ou número, não ter barras ou pontos e ter menos de 128 caracteres. Depois de iniciar o nome com uma letra ou número, o restante do nome pode incluir qualquer letra, número e traços, desde que os traços não sejam consecutivos.
api-version Necessário. Consulte versões de API para obter mais versões.

Cabeçalhos de solicitação

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

Campos Descrição
Tipo de conteúdo Necessário. Defina isso como application/json
chave de api Opcional se você estiver usando funções do Azure e um token de portador for fornecido na solicitação, caso contrário, uma chave será necessária. Uma chave de api é uma cadeia de caracteres exclusiva gerada pelo sistema que autentica a solicitação para o serviço de pesquisa. As solicitações de criação devem incluir um cabeçalho api-key definido como sua chave de administrador (em vez de uma chave de consulta). Consulte Conectar-se ao Azure AI Search usando de autenticação de chave para obter detalhes.

Corpo da Solicitação

O corpo da solicitação contém uma definição de fonte de dados, que inclui o tipo da fonte de dados, credenciais para ler os dados, bem como uma detecção de alteração de dados opcional e políticas de detecção de exclusão de dados que são usadas para identificar dados alterados ou excluídos com eficiência na fonte de dados quando usados com um indexador agendado periodicamente

O JSON a seguir é uma representação de alto nível das partes principais da definição.

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

A solicitação contém as seguintes propriedades:

Propriedade Descrição
nome Necessário. O nome da fonte de dados. Um nome de fonte de dados deve conter apenas letras minúsculas, dígitos ou traços, não pode iniciar ou terminar com traços e é limitado a 128 caracteres.
descrição Uma descrição opcional.
tipo Necessário. Deve ser um dos tipos de fonte de dados com suporte:

adlsgen2 para
azureblob do Azure Data Lake Storage Gen2 para
azurefiles de Armazenamento de Blobs do Azure para Armazenamento de Arquivos do Azure
azuresql para
azuretable do Banco de Dados SQL do Azure para
cosmosdb de Armazenamento de Tabelas do Azure para a API do SQL do Azure Cosmos DB , de API do MongoDB,
mysql de API do Gremlin para banco de dados do Azure para MySQL
credenciais Necessário. Contém uma propriedade connectionString que especifica como se conectar.
recipiente Necessário. Especifica o contêiner, a coleção, a tabela ou a exibição que contém os dados a serem indexados.
dataChangeDetectionPolicy Opcional. Especifica o mecanismo fornecido pela plataforma de dados para identificar itens de dados alterados.
dataDeletionDetectionPolicy Opcional. Identifica como a plataforma de dados exclui dados.
encryptionKey Opcional. Usado para criptografia adicional de credenciais de fonte de dados, por meio cmk (chaves de criptografia gerenciadas pelo cliente) no Azure Key Vault. Disponível para serviços de pesquisa faturáveis criados em ou após 2019-01-01.
desactivado Opcional. Valor booliano que indica se o indexador é criado em um estado desabilitado, o que o impede de ser executado imediatamente. False por padrão.
identidade Opcional. Ele contém uma userAssignedIdentity do tipo #Microsoft.Azure.Search.DataUserAssignedIdentity e especifica o de identidade gerenciada atribuída pelo usuário do recurso externo. Essa propriedade depende de credentials ter a cadeia de conexão no formato certo (uma ID de recurso) para conexões de identidade gerenciada para cada tipo de fonte de dados.

Se a propriedade identity for nula, a conexão com uma ID de recurso será feita usando a propriedade gerenciada pelo sistema.

Se essa propriedade for atribuída ao tipo #Microsoft.Azure.Search.DataNoneIdentity, qualquer identidade explícita especificada anteriormente será desmarcada.

Resposta

Para uma solicitação bem-sucedida: 201 Criado se uma nova fonte de dados foi criada e 204 Sem Conteúdo se uma fonte de dados existente foi atualizada.

Exemplos

exemplo: funções do Azure e uma identidade gerenciada atribuída pelo sistema

Se o serviço de pesquisa tiver uma identidade gerenciada atribuída pelo sistema e uma atribuição de função, a conexão da fonte de dados poderá ser a ID de recurso exclusiva da sua conta de armazenamento.

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

Exemplo: funções do Azure e uma identidade gerenciada atribuída pelo usuário (versão prévia)

Este exemplo demonstra uma conexão autenticada do Azure AD para um serviço de pesquisa que tem uma identidade gerenciada atribuída pelo usuário.

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

exemplo: SQL do Azure com detecção de alterações (Política de Detecção de Alterações de Marca D'água)

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

exemplo: SQL do Azure com detecção de alterações (Política de Controle de Alterações Integrada de 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" }
}  

exemplo: SQL do Azure com detecção de alterações com detecção de exclusão

Lembre-se de que as propriedades para detecção de exclusão são "softDeleteColumnName" e "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" }  
}  

exemplo: fonte de dados com propriedades necessárias apenas

As propriedades opcionais relacionadas à detecção de alteração e exclusão poderão ser omitidas se você pretende usar apenas a fonte de dados para cópia única dos dados:

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

exemplo: usando a opção de credencial inalterada ou redigida

Se você pretende atualizar a fonte de dados, as credenciais não são necessárias. Os valores <unchanged> ou <redacted> podem ser usados no lugar da cadeia de conexão.

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

exemplo: chaves de criptografia

Chaves de criptografia são chaves gerenciadas pelo cliente usadas para criptografia adicional. Para obter mais informações, consulte Encryption usando chaves gerenciadas pelo cliente no 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)"}
      }
}

exemplo: conexões de cofre de chaves de criptografia por serviços de pesquisa com uma identidade gerenciada atribuída pelo usuário

Este exemplo omite accessCredentials. Para um recurso que tenha uma identidade gerenciada atribuída pelo usuário atribuída a ele, você pode especificar a identidade em encryptionKey e recuperar a chave usando essa identidade e atribuições de função do 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"
        }
    }
}

Definições

Link Descrição
de contêiner Especifica o contêiner, a coleção, a tabela ou a exibição que contém os dados a serem indexados.
credenciais Contém uma propriedade connectionString que especifica como um indexador se conecta a um recurso do Azure.
dataChangeDetectionPolicy Especifica o mecanismo fornecido pela plataforma de dados para identificar dados alterados.
dataDeletionDetectionPolicy Especifica o mecanismo para detectar dados excluídos.
encryptionKey Configura uma conexão com o Azure Key Vault para criptografia gerenciada pelo cliente.

recipiente

Especifica o contêiner, a coleção, a tabela ou a exibição que contém os dados a serem indexados.

Atributo Descrição
nome Necessário. Para o Azure Cosmos DB, especifica a coleção de API do SQL. Para o Armazenamento de Blobs do Azure, especifica o contêiner de armazenamento. Para o SQL do Azure, especifica a tabela ou exibição. Você pode usar nomes qualificados por esquema, como [dbo].[mytable]. Para o Armazenamento de Tabelas do Azure, especifica o nome da tabela.
consulta Opcional. Para o Azure Cosmos DB, permite especificar uma consulta que nivela um layout de documento JSON arbitrário em um esquema simples que o Azure AI Search pode indexar. Para o Armazenamento de Blobs do Azure, permite que você especifique uma pasta virtual dentro do contêiner de blob. Por exemplo, para mycontainer/documents/blob.pdfde caminho de blob, documents pode ser usado como a pasta virtual. Para o Armazenamento de Tabelas do Azure, permite especificar uma consulta que filtra o conjunto de linhas a serem importadas. Para o SQL do Azure, não há suporte para consulta (use exibições).

credenciais

Contém uma propriedade "connectionString" que especifica como um indexador se conecta a um recurso do Azure.

Atributo Descrição
connectionString Necessário. Especifica uma conexão com uma fonte de dados do indexador. Se você estiver atualizando a definição da fonte de dados, a cadeia de conexão não será necessária. Os valores <unchanged> ou <redacted> podem ser usados no lugar da cadeia de conexão real.

Para conexões autenticadas usando chaves ou credenciais de entrada, esses valores são visíveis na cadeia de conexão. O formato da cadeia de conexão depende do tipo de fonte de dados:

Para o Banco de Dados SQL do Azure, essa é a cadeia de conexão usual do SQL Server. Se você estiver usando o portal do Azure para recuperar a cadeia de conexão, escolha a opção ADO.NET connection string.

Para o Azure Cosmos DB, a cadeia de conexão deve estar no seguinte formato: "AccountEndpoint=https://[your account name].documents.azure.com;AccountKey=[your account key];Database=[your database id]". Todos os valores são necessários. Você pode encontrá-los no portal do Azure.

Se você estiver usando uma identidade gerenciada para autenticar, poderá omitir credenciais na conexão.

Para conexões autenticadas usando uma identidade gerenciada, a cadeia de conexão especifica a ID do recurso do Azure (consulte estes links para o formato de cadeia de conexão: de Armazenamento do Azure, do Cosmos DB,banco de dados SQL).

As atribuições de função com escopo para a fonte de dados externa determinam se o indexador pode se conectar e o serviço de pesquisa deve ser configurado para ser executado como um serviço confiável no Azure Active Directory.

Se a propriedade "identity" também for especificada, a conexão será feita usando a identidade gerenciada atribuída pelo usuário do serviço de pesquisa fornecida pela propriedade "identity". Caso contrário, se "identidade" não for especificada ou nula, a conexão será por meio da identidade gerenciada pelo sistema.

dataChangeDetectionPolicy

Especifica o mecanismo fornecido pela plataforma de dados para identificar dados alterados. As políticas com suporte variam de acordo com o tipo de fonte de dados.

Atributo Descrição
dataChangeDetectionPolicy Opcional. As políticas válidas incluem HighWatermarkChangeDetectionPolicy ou SqlIntegratedChangeDetectionPolicy.

HighWatermarkChangeDetectionPolicy depende de uma coluna ou propriedade existente que é atualizada em conjunto com outras atualizações (todas as inserções resultam em uma atualização para a coluna de marca d'água) e a alteração no valor é maior.

SqlIntegratedChangeDetectionPolicy é usado para referenciar os recursos nativos de detecção de alterações no SQL Server. Essa política só pode ser usada com tabelas; ele não pode ser usado com exibições. Você precisa habilitar o controle de alterações para a tabela que está usando antes de poder usar essa política. Consulte Habilitar e desabilitar de controle de alterações para obter instruções.
highWaterMarkColumnName Necessário para HighWatermarkChangeDetectionPolicy. Para o Cosmos DB, a coluna deve ser _ts propriedade. Para o SQL do Azure, uma coluna de rowversion indexada é recomendada. Para o Armazenamento do Azure, a detecção de alterações é interna usando valores lastModified, eliminando qualquer necessidade de definir o dataChangeDetectionPolicy.

dataDeletionDetectionPolicy

Especifica o mecanismo fornecido pela plataforma de dados para identificar dados excluídos. As políticas com suporte variam de acordo com o tipo de fonte de dados.

Atributo Descrição
dataDeletionDetectionPolicy Opcional. Os valores válidos são SoftDeleteColumnDeletionDetectionPolicy ou NativeBlobSoftDeleteDeletionDetectionPolicy (consulte exclusão reversível de blob nativo (versão prévia)).

Atualmente, a única política geralmente disponível éSoftDeleteColumnDeletionDetectionPolicy, que identifica itens excluídos com base no valor de uma coluna ou propriedade de "exclusão reversível" na fonte de dados.

softDeleteColumnName" Necessário. Nome de uma coluna em sua fonte de dados fornecendo um valor que especifica o status de exclusão de uma linha. Por exemplo, você pode criar uma coluna chamada "IsDeleted". Há suporte apenas para colunas com valores de cadeia de caracteres, inteiros ou boolianos.
softDeleteMarkerValue Necessário. O valor da coluna de exclusão reversível. O valor usado como softDeleteMarkerValue deve ser uma cadeia de caracteres, mesmo que a coluna correspondente contenha inteiros ou boolianos. Por exemplo, se o valor exibido na fonte de dados for 1, use "1" como o softDeleteMarkerValue. Se o indexador ler esse valor da coluna de exclusão reversível, ele excluirá o documento de pesquisa correspondente do índice de pesquisa.

encryptionKey

Configura uma conexão com o Azure Key Vault para cmk (chaves de criptografia gerenciadas pelo cliente) complementares. A criptografia com chaves gerenciadas pelo cliente não está disponível para serviços gratuitos. Para serviços faturáveis, ele só está disponível para serviços de pesquisa criados em ou após 2019-01-01.

Uma conexão com o cofre de chaves deve ser autenticada. Você pode usar "accessCredentials" ou uma identidade gerenciada para essa finalidade.

As identidades gerenciadas podem ser atribuídas pelo sistema ou pelo usuário (versão prévia). Se o serviço de pesquisa tiver uma identidade gerenciada atribuída pelo sistema e uma atribuição de função que conceda acesso de leitura ao cofre de chaves, você poderá omitir "identidade" e "accessCredentials", e a solicitação será autenticada usando a identidade gerenciada. Se o serviço de pesquisa tiver atribuição de função e identidade atribuída pelo usuário, defina a propriedade "identity" como a ID do recurso dessa identidade.

Atributo Descrição
keyVaultKeyName Necessário. Nome da chave do Azure Key Vault usada para criptografia.
keyVaultKeyVersion Necessário. Versão da chave do Azure Key Vault.
keyVaultUri Necessário. URI do Azure Key Vault (também conhecido como nome DNS) que fornece a chave. Um URI de exemplo pode ser https://my-keyvault-name.vault.azure.net.
accessCredentials Omita se você estiver usando uma identidade gerenciada. Caso contrário, as propriedades de accessCredentials incluem applicationId (uma ID de Aplicativo do Azure Active Directory que tem permissões de acesso ao Azure Key Vault especificado) e applicationSecret (a chave de autenticação do aplicativo do Azure AD especificado).
identidade Opcional, a menos que você esteja usando uma identidade gerenciada atribuída pelo usuário para a conexão do serviço de pesquisa com o Azure Key Vault. O formato é "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Consulte também