Agendar um indexador no Azure AI Search

Os indexadores podem ser configurados para serem executados em uma agenda quando você define a schedule propriedade. Algumas situações em que o agendamento do indexador é útil incluem:

  • Os dados de origem estão mudando ao longo do tempo e você deseja que o indexador processe automaticamente a diferença.
  • Os dados de origem são muito grandes e você precisa de uma programação recorrente para indexar todo o conteúdo.
  • Um índice é preenchido a partir de várias fontes, usando vários indexadores, e você deseja escalonar os trabalhos para reduzir conflitos.

Quando a indexação não pode ser concluída dentro da janela de processamento típica de 2 horas, você pode agendar o indexador para ser executado em uma cadência de 2 horas para trabalhar em um grande volume de dados. Desde que sua fonte de dados ofereça suporte à lógica de deteção de alterações, os indexadores podem retomar automaticamente de onde pararam em cada execução.

Quando um indexador está em uma agenda, ele permanece na agenda até que você limpe o intervalo ou a hora de início, ou defina disabled como true. Deixar o indexador em um cronograma quando não há nada para processar não afetará o desempenho do sistema. A verificação de conteúdo alterado é uma operação relativamente rápida.

Pré-requisitos

  • Um indexador válido configurado com uma fonte de dados e um índice.

  • Deteção de alterações na fonte de dados. O Armazenamento do Azure e o SharePoint têm deteção de alterações incorporada. Outras fontes de dados, como o Azure SQL e o Azure Cosmos DB , devem ser habilitadas manualmente.

Definição de cronograma

Uma agenda faz parte da definição do indexador. Se a schedule propriedade for omitida, o indexador só será executado sob demanda. A propriedade tem duas partes.

Property Description
"intervalo" (obrigatório) A quantidade de tempo entre o início de duas execuções consecutivas do indexador. O menor intervalo permitido é de 5 minutos, e o mais longo é de 1440 minutos (24 horas). Ele deve ser formatado como um valor XSD "dayTimeDuration" (um subconjunto restrito de um valor de duração ISO 8601).

O padrão para isso é: P(nD)(T(nH)(nM)).

Exemplos: PT15M a cada 15 minutos, PT2H a cada duas horas.
"StartTime" (facultativo) A hora de início é especificada em tempo universal coordenado (UTC). Se omitido, a hora atual é usada. Esse tempo pode estar no passado, caso em que a primeira execução é agendada como se o indexador estivesse sendo executado continuamente desde a hora de início original.

O exemplo a seguir é um cronograma que começa em 1º de janeiro à meia-noite e é executado a cada duas horas.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Configurar uma agenda

As agendas são especificadas em uma definição de indexador. Para configurar uma agenda, você pode usar o portal do Azure, APIs REST ou um SDK do Azure.

  1. Entre no portal do Azure e abra a página do serviço de pesquisa.
  2. No painel de navegação esquerdo, selecione Indexadores.
  3. Abra um indexador.
  4. Selecione Definições.
  5. Desloque-se para baixo até Agendar e, em seguida, selecione Horária, Diária ou Personalizada para definir uma data, hora ou intervalo personalizado específico.

Alterne para a guia Definição de indexador (JSON) na parte superior do índice para exibir a definição de agenda no formato XSD.

Comportamento de agendamento

Para indexação baseada em texto, o agendador pode iniciar tantos trabalhos de indexador quanto o serviço de pesquisa suportar, que é determinado pelo número de unidades de pesquisa. Por exemplo, se o serviço tiver três réplicas e quatro partições, você poderá ter 12 trabalhos de indexador em execução ativa, iniciados sob demanda ou agendados.

Os indexadores baseados em habilidades são executados em um ambiente de execução diferente. Por esse motivo, o número de unidades de serviço não tem influência sobre o número de trabalhos de indexador baseados em habilidades que você pode executar. Vários indexadores baseados em habilidades podem ser executados em paralelo, mas isso depende da disponibilidade do nó no ambiente de execução.

Embora vários indexadores possam ser executados simultaneamente, um determinado indexador é uma única instância. Não é possível executar duas cópias do mesmo indexador simultaneamente. Se um indexador ainda estiver em execução quando sua próxima execução agendada estiver definida para iniciar, a execução pendente será adiada até a próxima ocorrência agendada, permitindo que o trabalho atual seja concluído.

Vamos considerar um exemplo para tornar isso mais concreto. Suponhamos que configuramos uma programação de indexador com um intervalo de hora e uma hora de início de 1 de janeiro de 2024 às 8:00:00 AM UTC. Veja o que pode acontecer quando uma execução de indexador leva mais de uma hora:

  • A primeira execução do indexador começa em ou por volta de 1º de janeiro de 2024 às 8h00 UTC. Suponha que essa execução leva 20 minutos (ou qualquer quantidade de tempo inferior a 1 hora).

  • A segunda execução começa em ou por volta de 1 de janeiro de 2022 9:00 AM UTC. Suponha que esta execução demore 70 minutos - mais de uma hora - e não será concluída até às 10:10 AM UTC.

  • A terceira execução está programada para começar às 10:00 AM UTC, mas nesse momento a execução anterior ainda está em execução. Essa execução agendada é então ignorada. A próxima execução do indexador não começará até às 11:00 UTC.

Nota

Se um indexador estiver definido para um determinado cronograma, mas falhar repetidamente no mesmo documento todas as vezes, o indexador começará a ser executado em um intervalo menos frequente (até o intervalo máximo de pelo menos uma vez a cada 2 horas ou 24 horas, dependendo de diferentes fatores de implementação) até que ele faça progresso com êxito novamente. Se você acredita ter corrigido qualquer problema subjacente, você pode executar o indexador manualmente e, se a indexação for bem-sucedida, o indexador retornará à sua programação regular.

Próximos passos

Para indexadores executados em uma agenda, você pode monitorar operações recuperando o status do serviço de pesquisa ou obter informações detalhadas habilitando o log de recursos.