Programación de un indexador en Azure AI Search

Los indizadores se pueden configurar para que se ejecuten según una programación al establecer la schedule propiedad . Estas son algunas situaciones en las que resulta útil programar el indexador:

  • Los datos de origen cambian con el tiempo y quiere 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 desde varios orígenes, usando varios indexadores, y quiere escalonar los trabajos para reducir los conflictos.

Cuando la indexación no se puede completar dentro de la ventana de procesamiento típica de 2 horas, puede programar que el indexador se ejecute en una cadencia de 2 horas para que funcione en 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 un indexador está en 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. Dejar el indexador en una programación cuando no hay nada que procesar no afectará 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. Otros orígenes de datos, como Azure SQL y Azure Cosmos DB, deben habilitarse manualmente.

Definición de una programación

La programación forma parte de la definición del indexador. Si se omite la schedule propiedad , el indexador solo se ejecutará 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 breve que se permite es 5 minutos, mientras que el mayor es 1440 minutos (24 horas). Debe tener el formato de un valor "dayTimeDuration" XSD (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) La hora de inicio se especifica en hora universal coordinada (UTC). Si se omite, se usará 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

Las programaciones se especifican en una definición de indexador. Para configurar una programación, puede usar Azure Portal, las API de REST o un SDK de Azure.

  1. Inicie sesión en Azure Portal y abra la página del servicio de búsqueda.
  2. En el panel de navegación izquierdo, seleccione Indexadores.
  3. Abra un indexador.
  4. Haga clic en Configuración.
  5. Desplácese hacia abajo hasta Programar y, a continuación, elija Cada hora, Diario o Personalizado 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.

Comportamiento de la programación

En el caso de la indexación basada en texto, el programador puede iniciar tantos trabajos de indexador como admita el servicio de búsqueda, que se determina según 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.

Los indexadores basados en aptitudes se ejecutan en un entorno de ejecución diferente. Por este motivo, el número de unidades de servicio no influye en el número de trabajos del indexador basado en aptitudes que se pueden ejecutar. Se pueden ejecutar varios indexadores basados en aptitudes en paralelo, pero esto depende de la disponibilidad de los nodos en el entorno de ejecución.

Aunque varios indexadores se pueden ejecutar a la vez, un indexador determinado es una única instancia. No se pueden ejecutar dos copias del mismo indexador de forma simultánea. Si se sigue ejecutando un indexador cuando su siguiente ejecución programada está establecida para iniciarse, la ejecución pendiente se pospone hasta la siguiente repetición programada, lo que permite que finalice el trabajo actual.

Veamos un ejemplo entenderlo concretamente. Supongamos que configuramos una programación de indexador con un intervalo de horas y una hora de inicio del 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:

  • 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).

  • La segunda ejecución comienza a las 1 de enero de 2022 a las 9:00 UTC. Suponga que esta ejecución tarda 70 minutos (más de una hora) y no se completará hasta 10:10 A. M. UTC.

  • 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 iniciará hasta las 11:00 UTC.

Nota:

Si un indexador se establece según una programación determinada pero se produce repetidamente un error en el mismo documento cada vez, el indexador comenzará a ejecutarse en un intervalo menos frecuente (hasta el intervalo máximo de al menos una vez cada 2 o 24 horas, en función de los distintos factores de implementación) hasta que vuelva a avanzar correctamente. Si cree que corrigió el problema subyacente, puede ejecutar el indexador de manera manual y, si la indexación se realiza correctamente, el indexador volverá a su programación normal.

Pasos siguientes

En el caso de los indizadores que se ejecutan según una programación, puede supervisar las operaciones al recuperar el estado del servicio de búsqueda, o bien obtener información detallada al habilitar el registro de recurso.