Agendar um indexador no Azure AI Search
Os indexadores podem ser configurados para serem executados em um agendamento quando você definir a propriedade schedule
. 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 um agendamento recorrente para indexar todo o conteúdo.
- Um índice é preenchido de várias fontes, usando vários indexadores, e você deseja escalonar os trabalhos para reduzir conflitos.
Quando a indexação não puder ser concluída na janela de processamento típica de 2 horas, você pode agendar que o indexador seja executado em uma cadência de 2 horas para trabalhar em um grande volume de dados. Desde que sua fonte de dados dê suporte a lógica de detecção de alterações, os indexadores poderão continuar automaticamente de onde pararam em cada execução.
Quando um indexador estiver em um agendamento, ele permanecerá no agendamento até que você desmarque o intervalo ou a hora de início ou defina disabled
como true. Deixar o indexador em um agendamento quando não houver nada para processar não afetará o desempenho do sistema. Verificar se há conteúdo alterado é uma operação relativamente rápida.
Pré-requisitos
Um indexador válido configurado com uma fonte de dados e um índice.
Altere a detecção na fonte de dados. O Armazenamento do Microsoft Azure e SharePoint têm detecção de alteração interna. Outras fontes de dados, como o SQL do Azure e o Azure Cosmos DB, devem ser habilitadas manualmente.
Erro de Definição de Agenda
Schedule faz parte da definição do indexador. Se a propriedade schedule
for omitida, o indexador será executado somente sob demanda. A propriedade tem duas partes.
Propriedade | Descrição |
---|---|
"intervalo" | O intervalo refere-se ao 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 de "dayTimeDuration" (um subconjunto restrito de um valor de duração ISO 8601 ). O padrão para isso é: P(nD)(T(nH)(nM)) . Exemplos: PT15M para cada 15 minutos, PT2H para cada duas horas. |
"startTime" | (opcional) A hora de início é especificada em UTC (tempo Universal Coordenado). Se for omitido, a hora atual será usada. Esse tempo pode estar no passado, caso em que a primeira execução é agendada como se o indexador fosse executado continuamente desde a hora de início original. |
O exemplo a seguir é um agendamento 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 um agendamento
Os escalonamentos são especificados em uma definição de indexador. Para configurar uma programação, você pode usar o portal do Azure, REST APIs 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 Configurações.
- Role para baixo para Agendamento, e, em seguida, escolha Horário, Diário ou Personalizado para definir uma data, hora ou intervalo personalizado específico.
Alterne para a guia Definição do indexador (JSON) na parte superior do índice para exibir a definição do agenda no formato XSD.
Perguntas frequentes sobre o comportamento do agendamento
Posso executar vários trabalhos de indexador em paralelo?
Você pode executar vários indexadores simultaneamente, mas cada indexador é uma instância individual. Você não pode executar duas cópias do mesmo indexador simultaneamente.
Para a indexação baseada em texto, o agendador pode iniciar quantos trabalhos do indexador forem compatíveis com o serviço de pesquisa, o 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, sejam eles iniciados sob demanda ou em uma agenda.
Para a 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 nenhuma influência sobre o número de trabalhos indexadores 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 sempre são iniciados no horário designado?
Os processos do indexador podem ser colocados na fila e podem não ser iniciados exatamente no momento da postagem, dependendo da carga de trabalho de processamento e de outros fatores. Por exemplo, se um indexador ainda estiver em execução quando a próxima execução agendada estiver definida para ser iniciada, 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. Suponha que configuramos uma agenda de indexador com um intervalo de hora em hora e uma hora de início em 1º de janeiro de 2024 às 8:00:00 AM UTC. Veja o que poderia acontecer quando uma execução de indexador demorasse mais do que uma hora:
A primeira execução do indexador começa por volta de 1º de janeiro de 2024 às 8:00 AM UTC. Suponha que essa execução leve 20 minutos (ou qualquer período de tempo menor que 1 hora).
A segunda execução é iniciada em 1º de janeiro de 2024 ou por volta dessa data às 9h UTC. Suponha que essa execução leva 70 minutos – mais de uma hora – e não será concluída até 10:10 AM UTC.
A terceira execução está agendada para iniciar às 10:00 AM UTC, mas, nesse momento, a execução anterior ainda está em execução. Essa execução agendada é ignorada. A próxima execução do indexador não será iniciada até 11:00 AM UTC.
Observação
Se você tiver requisitos rígidos de execução do indexador sensíveis ao tempo, considere o uso do modelo de API por push para poder controlar diretamente o pipeline de indexação.
O que acontecerá se a indexação falhar repetidamente no mesmo documento?
Se um indexador for definido como um determinado agendamento, mas falhar repetidamente no mesmo documento a cada vez, 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 o andamento novamente. Se você acredita que corrigiu o problema subjacente, execute o indexador manualmente e, se a indexação for bem sucedida, o indexador voltará ao agendamento normal.
Próximas etapas
Para indexadores executados em um agendamento, você pode monitorar operações recuperando o status do serviço de pesquisa ou obter informações detalhadas habilitando o log de recurso.