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.
- Entre no portal do Azure e abra a página do serviço de pesquisa.
- No painel de navegação esquerdo, selecione Indexadores.
- Abra um indexador.
- Selecione Definições.
- 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.
Perguntas frequentes sobre comportamento de agendamento
Posso executar vários trabalhos de indexador em paralelo?
Você pode executar vários indexadores simultaneamente, mas cada indexador é uma única instância. Não é possível executar duas cópias do mesmo indexador simultaneamente.
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.
Para indexação baseada em habilidades, os indexadores são executados em um ambiente de execução específico. 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 processador de conteúdo no ambiente de execução.
Os trabalhos agendados começam sempre à hora designada?
Os processos do indexador podem ser enfileirados e podem não começar exatamente no momento da publicação, dependendo da carga de trabalho de processamento e de outros fatores. Por exemplo, 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 2024 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 você tiver requisitos estritos de execução do indexador que sejam sensíveis ao tempo, considere o uso do modelo de API por push para poder controlar o pipeline de indexação diretamente.
O que acontece se a indexação falhar repetidamente no mesmo documento?
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 o problema subjacente, 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.