Programación de un indexador en Búsqueda de Azure AI

Nota:

Búsqueda de Azure AI está disponible a través del portal de Azure, las API REST y los SDK de Azure. También respalda Foundry IQ, la capa de conocimiento administrada que transforma el contenido empresarial en bases de conocimiento reutilizables y compatibles con permisos para agentes en el portal de Microsoft Foundry.

Establezca la schedule propiedad para configurar los indexadores para que se ejecuten según una programación. La programación del indexador es útil en situaciones como:

  • Los datos de origen cambian con el tiempo y desea que el indexador procese automáticamente la diferencia.
  • Los datos de origen son muy grandes y se necesita una programación periódica para indexar todo el contenido.
  • Un índice se rellena a partir de varias fuentes mediante varios indexadores, y es recomendable escalonar las tareas para reducir los conflictos.

Cuando la indexación no se puede completar dentro de la ventana de procesamiento típica de 2 horas, programe el indexador para que se ejecute en una cadencia de 2 horas para que funcione a través de un gran volumen de datos. Siempre que el origen de datos admita la lógica de detección de cambios, los indexadores pueden seleccionar automáticamente dónde se han dejado en cada ejecución.

Una vez que se coloca un indexador según una programación, permanece en la programación hasta que se borra el intervalo o la hora de inicio, o se establece disabled en true. Si un indexador programado deja de desencadenarse inesperadamente, consulte Preguntas más frecuentes sobre el comportamiento de programación para conocer los pasos de recuperación. Dejar el indexador según una programación cuando no hay nada que procesar no afecta al rendimiento del sistema. La comprobación del contenido modificado es una operación relativamente rápida.

Requisitos previos

  • Un indexador válido configurado con un origen de datos y un índice.

  • Detección de cambios en el origen de datos. Azure Storage y SharePoint tienen la detección de cambios integrada. Para otros orígenes de datos, como Azure SQL y Azure Cosmos DB, debe habilitar la detección de cambios manualmente.

Definición de una programación

La programación forma parte de la definición del indexador. Si omite la schedule propiedad , el indexador solo se ejecuta a petición. La propiedad tiene dos partes.

Propiedad Descripción
"interval" (Obligatorio) Se refiere al tiempo entre el inicio de dos ejecuciones consecutivas de indexador. El intervalo más pequeño permitido es de 5 minutos y el más largo es de 1440 minutos (24 horas). Déle formato como un valor XSD de tipo "dayTimeDuration" (que es un subconjunto restringido de un valor de duración ISO 8601).

El patrón de este valor es: P(nD)(T(nH)(nM)).

Ejemplos: PT15M para cada 15 minutos, PT2H para cada dos horas.
"startTime" (opcional) Especifique la hora de inicio en hora universal coordinada (UTC). Si omite este valor, se usa la hora actual. Este tiempo puede estar en el pasado, en cuyo caso la primera ejecución se programa como si el indexador se hubiera ejecutado continuamente desde la hora de inicio original.

El ejemplo siguiente es una programación que comienza el 1 de enero a medianoche y se ejecuta cada dos horas.

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

Configuración de una programación

Especifique programaciones en una definición del indexador. Para configurar una programación, use el portal de Azure, las API REST o un SDK de Azure.

  1. Vaya al servicio de búsqueda en Azure Portal.
  2. En el panel izquierdo, seleccione Indexadores.
  3. Abra un indexador.
  4. Seleccione Configuración.
  5. Desplácese hacia abajo hasta Programación y, a continuación, elija Hourly, Daily o Custom para establecer una fecha, hora o intervalo personalizado específicos.

Cambie a la pestaña Definición del indexador (JSON) en la parte superior del índice para ver la definición de programación en formato XSD.

Preguntas frecuentes sobre el comportamiento de la programación

¿Puedo ejecutar varios trabajos de indexador en paralelo?

Puede ejecutar varios indexadores simultáneamente, pero cada indexador es una sola instancia. No se pueden ejecutar dos copias del mismo indexador de forma simultánea.

Para la indexación basada en texto, el programador puede iniciar tantos trabajos de indexador como admite el servicio de búsqueda, que determina el número de unidades de búsqueda . Por ejemplo, si el servicio tiene tres réplicas y cuatro particiones, puede tener 12 trabajos de indexador en ejecución activa, independientemente de si se inician a petición o según una programación.

Para la indexación basada en aptitudes, los indexadores se ejecutan en un entorno de ejecución específico. Por este motivo, el número de unidades de servicio no afecta al número de trabajos de indexador basados en aptitudes que puede ejecutar. Se pueden ejecutar varios indexadores basados en aptitudes en paralelo, pero esto depende de la disponibilidad de los procesadores de contenido en el entorno de ejecución.

¿Se inician siempre los trabajos programados a la hora designada?

Los procesos de indexación pueden quedar en cola y es posible que no se inicien exactamente a la hora publicada, en función de la carga de procesamiento y de otros factores. Por ejemplo, si un indexador todavía se está ejecutando cuando está previsto que comience su siguiente ejecución programada, la ejecución pendiente se pospone hasta la siguiente ocasión programada, lo que permite que el trabajo en curso termine.

Para que este comportamiento sea más concreto, considere el ejemplo siguiente. Supongamos que se configura una programación de un indexador con un intervalo de una hora y con hora de inicio el 1 de enero de 2024 a las 8:00:00 UTC. Esto es lo que puede suceder cuando la ejecución de un indexador tarda más de una hora:

  1. La primera ejecución del indexador comienza a las 1 de enero de 2024 a las 8:00 UTC. Supongamos que esta ejecución tarda 20 minutos (o cualquier cantidad de tiempo inferior a 1 hora).

  2. La segunda ejecución se inicia exactamente o en torno a las 9:00 UTC del 1 de enero de 2024. Supongamos que esta ejecución tarda 70 minutos (más de una hora) y no se completa hasta las 10:10 UTC.

  3. La tercera ejecución está programada para empezar a 10:00 A. M. UTC, pero en ese momento todavía se está ejecutando la ejecución anterior. Luego esta ejecución programada se omite. La siguiente ejecución del indexador no se inicia hasta las 11:00 UTC.

En casos excepcionales, como durante el mantenimiento o al recuperarse de condiciones transitorias, el sistema pone en cola varias ejecuciones de indexadores. Cuando se produce esta condición, el indexador ejecuta cargas de trabajo pendientes secuencialmente dentro de la ventana programada. Por ejemplo, si un indexador está programado para ejecutarse cada hora y varias ejecuciones se retrasaron o se activaron bajo demanda, esas tareas en cola se ejecutan una tras otra hasta que la cola se vacíe. Estas ejecuciones no son ejecuciones adicionales, pero representan ejecuciones programadas o solicitadas previamente. Aunque este comportamiento es poco común en la mayoría de los escenarios, el indexador está diseñado para procesar finalmente todas las tareas en cola para mantener la coherencia y la actualización de los datos.

Nota:

Si tiene requisitos estrictos de ejecución del indexador con restricciones temporales, considere usar el modelo de inserción mediante API para poder controlar directamente el proceso de indexación.

¿Qué ocurre si la indexación genera errores en el mismo documento de forma repetida?

Si configura un indizador con una programación determinada, pero falla repetidamente con el mismo documento en cada ejecución, el indizador empieza a ejecutarse con menor frecuencia (hasta alcanzar un intervalo máximo de al menos una vez cada 2 horas o cada 24 horas, según distintos factores de implementación) hasta que vuelva a avanzar correctamente. Si cree que ha corregido el problema subyacente, ejecute el indexador manualmente. Si la indexación se realiza correctamente, el indexador vuelve a su programación normal. Si el indexador no vuelve a su programación habitual después de una ejecución manual realizada correctamente, consulte la siguiente pregunta.

Un indexador programado dejó de activarse. ¿Cómo se restablece su programación?

Si un indexador programado deja de ejecutarse, deshabilite y vuelva a habilitarlo para restablecer la programación. Un signo de que esta recuperación es necesaria: no aparecen nuevas ejecuciones en el historial de ejecución aunque la programación esté configurada y el origen de datos haya cambiado.

Establecer disabled en true suspende la programación horaria. Si se restablece a false (o se omite la propiedad), se reanuda la programación y se utiliza la hora actual como nueva referencia para el intervalo configurado.

  1. Vaya al servicio de búsqueda en Azure Portal.
  2. Seleccione Indexadores.
  3. Seleccione el indexador para abrirlo.
  4. Seleccione Configuración.
  5. Establezca el indexador en Deshabilitado.
  6. Haga clic en Guardar.
  7. Vuelva a establecer el indexador en Habilitado.
  8. Haga clic en Guardar.
  9. Seleccione la pestaña Historial de ejecución y compruebe que aparece una nueva ejecución dentro del siguiente intervalo programado.

Nota:

Al volver a habilitar el indexador, se restablece la programación con respecto a la hora actual, no a la original startTime. Por ejemplo, si el intervalo es de dos horas y se vuelve a habilitar a las 3:15 p. m., la siguiente ejecución programada es aproximadamente a las 5:15 p. m.

Pasos siguientes

Para los indexadores que se ejecutan según una programación, puede supervisar las operaciones recuperando el estado del servicio de búsqueda o obteniendo información detallada habilitando el registro de recursos.