Indexar dados de fontes de dados externas usando o Azure Data Factory

Concluído

Adicionar dados externos que não residem no Azure é uma necessidade comum na solução de pesquisa de uma organização. O Azure AI Search é flexível, pois permite muitas maneiras de criar e enviar dados para índices.

Enviar dados por push para um índice de pesquisa usando o Azure Data Factory (ADF)

Uma primeira abordagem é uma opção de código zero para enviar dados por push para um índice usando ADF. O ADF vem com conexões para quase 100 armazenamentos de dados diferentes. Com conectores como HTTP e REST que permitem conectar um número ilimitado de armazenamentos de dados. Esses armazenamentos de dados são usados como uma origem ou um destino (chamados coletores na atividade de cópia) em pipelines.

O conector de índice do Azure AI Search pode ser usado como um coletor em uma atividade de cópia.

Criar um pipeline do ADF para enviar dados por push para um índice de pesquisa

As etapas que você precisa seguir para usar o pipeline do ADF para enviar dados por push para um índice de pesquisa são:

  1. Crie um índice do Azure AI Search com todos os campos nos quais você deseja armazenar dados.
  2. Crie um pipeline com uma etapa de cópia de dados.
  3. Crie uma conexão de fonte de dados com onde seus dados residem.
  4. Crie um coletor para se conectar ao seu índice de pesquisa.
  5. Mapeie os campos dos dados de origem para o índice de pesquisa.
  6. Execute o pipeline para enviar os dados por push para o índice.

Por exemplo, imagine que você tenha dados de clientes no formato JSON hospedados externamente. Você deseja copiar esses clientes para um índice de pesquisa. O JSON está neste formato:

{
  "_id": "5fed1b38309495de1bc4f653",
  "firstName": "Sims",
  "lastName": "Arnold",
  "isAlive": false,
  "age": 35,
  "address": {
    "streetAddress": "Sumner Place",
    "city": "Canoochee",
    "state": "Palau",
    "postalCode": 1558
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "+1 (830) 465-2965"
    },
    {
      "type": "home",
      "number": "+1 (889) 439-3632"
    }
  ]
}

Criar um índice de pesquisa

Crie um serviço Azure AI Search e um índice para armazenar essas informações. Se você concluiu o módulo Criar uma solução de Pesquisa de IA do Azure, viu como fazer isso. Siga as etapas para criar o serviço de pesquisa, mas pare no ponto de importação de dados. Como enviar dados para um índice não precisa que você crie um indexador ou conjunto de habilidades.

Crie um índice e adicione estes campos e propriedades:

A screenshot of the search index field definitions.

No momento, você precisa criar o índice primeiro, pois o ADF não pode criar índices.

Criar um pipeline usando a ferramenta Copiar dados do ADF

Abra o Azure Data Factory Studio e selecione sua assinatura do Azure e o nome da fábrica de dados.

A screenshot of Azure Data Factory and selecting ingest.

  1. Selecione Ingerir.

  2. Selecione Seguinte.

    Nota

    Você pode optar por agendar o pipeline se seus dados estiverem mudando e precisar manter seu índice atualizado. Neste exemplo, você importará os dados uma vez.

Criar o serviço vinculado de origem

  1. Em Tipo de origem, selecione HTTP.

  2. Ao lado de Conexão, selecione + Nova conexão.

    A screenshot showing creating an HTTP linked service.

  3. No painel Nova conexão, em Nome, insira dataLocation.

  4. Na URL base, insira onde o arquivo JSON reside, neste exemplo digite https://raw.githubusercontent.com/Azure-Samples/azure-sql-db-import-data/main/json/user1.json.

  5. Em Tipo de autenticação, selecione Anônimo.

  6. Selecione Criar.

  7. Selecione Seguinte.

    A screenshot of the configuration page of the lined service.

  8. Em Formato de arquivo, selecione JSON.

  9. Selecione Seguinte.

Criar o serviço vinculado de destino

  1. Em Tipo de destino, selecione Pesquisa do Azure. Em seguida, selecione + Nova conexão.

    A screenshot showing creating a linked service to AI Search.

  2. No painel Nova conexão, em Nome, digite search_index.

  3. Na assinatura do Azure, selecione sua assinatura do Azure.

  4. Em Nome do serviço, selecione seu serviço Azure AI Search.

  5. Selecione Criar.

  6. No painel Armazenamento de dados de destino, em Destino, selecione o índice de pesquisa criado.

Mapeie campos de origem para campos de destino

  1. Selecione Seguinte.

    A screenshot of the schema mapping pane.

  2. Se você criou um índice com nomes de campo que correspondem aos atributos JSON, o ADF mapeará automaticamente o JSON para o campo em seu índice de pesquisa.

  3. No exemplo acima, três campos no documento JSON precisam ser mapeados para campos no índice.

  4. Mapeie seus campos e selecione Avançar.

  5. No painel Configurações, em Nome da tarefa, digite jsonToSearchIndex.

  6. Selecione Seguinte.

Execute o pipeline para enviar os dados para o índice

  1. No painel Resumo, selecione Avançar.

    A screenshot showing the pipeline deployment complete.

  2. Depois que o pipeline tiver sido validado e implantado, selecione Concluir.

O pipeline foi implantado e executado. O documento JSON terá sido adicionado ao seu índice de pesquisa. Você pode usar o portal do Azure e executar uma pesquisa no explorador de pesquisa. Você deve ver os dados JSON importados.

A screenshot of the JSON data in the search index.

Seguindo estas etapas, você viu como enviar dados por push para um índice. O pipeline que você criou por padrão mescla atualizações no índice. Se você alterou os dados JSON e executou novamente o pipeline, o índice de pesquisa será atualizado. Você pode alterar o comportamento de gravação para carregar somente se quiser que os dados sejam substituídos sempre que executar o pipeline.

Limitações de usar a Pesquisa de IA do Azure interna como um serviço vinculado

No momento, o serviço vinculado Azure AI Search como um coletor suporta apenas estes campos:

Tipo de dados Azure AI Search
String
Int32
Int64
Duplo
Boolean
DataTimeOffset

Isso significa que ComplexTypes e arrays não são suportados no momento. Olhando para o documento JSON acima, isso significa que não é possível mapear todos os números de telefone do cliente. Apenas o primeiro número de telefone foi mapeado.