Compartir vía


Indexación de datos a partir de bases de datos de Azure SQL

En este artículo, aprenderá a configurar un indexador que importa contenido de Azure SQL Database o Azure SQL Managed Instance y hace que se puedan realizar búsquedas en él en Azure AI Search.

En este artículo se complementa la creación de un indexador con información específica de Azure SQL. Usa Azure Portal y las API de REST para demostrar un flujo de trabajo de tres partes común a todos los indexadores: crear un origen de datos, crear un índice y crear un indexador. La extracción de datos se produce cuando se envía la solicitud para crear un indexador.

En este artículo también aparece:

Nota:

La sincronización de datos en tiempo real no es posible con un indexador. Un indexador puede volver a indexar la tabla cada cinco minutos como máximo. Si las actualizaciones de datos deben reflejarse en el índice antes, se recomienda insertar filas actualizadas directamente.

Requisitos previos

  • Una base de datos de Azure SQL o una instancia administrada de SQL con un punto de conexión público.

  • Una sola tabla o vista.

    Use una tabla si los datos son grandes o si necesita indexación incremental mediante las funcionalidades de detección de cambios nativas de SQL (seguimiento de cambios integrado de SQL) para reflejar filas nuevas, modificadas y eliminadas en el índice de búsqueda.

    Use una vista si necesita consolidar datos de varias tablas. Las vistas grandes no son ideales para el indexador de SQL. Una solución alternativa consiste en crear una nueva tabla solo para la ingesta en el índice de Azure AI Search. Si decide ir con una vista, puede usar marca de agua alta para la detección de cambios, pero debe usar una solución alternativa para la detección de eliminación.

  • La clave principal debe tener un solo valor. En una tabla, también debe estar no agrupado para el seguimiento de cambios integrado de SQL completo.

  • Permisos de lectura. Azure AI Search admite la autenticación de SQL Server, donde el nombre de usuario y la contraseña se proporcionan en la cadena de conexión. Como alternativa, puede configurar una identidad administrada y usar roles de Azure con pertenencia a los roles Colaborador de SQL Server o Colaborador de Base de datos SQL.

Para trabajar con los ejemplos de este artículo, necesita Azure Portal o un Cliente REST. Si usa Azure Portal, asegúrese de que el acceso a todas las redes públicas está habilitado en el firewall de Azure SQL y de que el cliente tiene acceso a través de una regla de entrada. Para un cliente REST que se ejecute localmente, configure el firewall de SQL Server para permitir el acceso entrante desde la dirección IP del dispositivo. Otros enfoques para crear un indexador de Azure SQL incluyen los SDK de Azure.

Pruebe con datos de ejemplo

Use estas instrucciones para crear y cargar una tabla en Azure SQL Database con fines de prueba.

  1. Descargue hotels-azure-sql.sql de GitHub para crear una tabla en Azure SQL Database que contenga un subconjunto del conjunto de datos de hoteles de ejemplo.

  2. Inicie sesión en Azure Portal y cree una base de datos de Azure SQL y un servidor de bases de datos. Considere la posibilidad de configurar la autenticación de SQL Server y la autenticación de Microsoft Entra ID. Si no tiene permisos para configurar roles en Azure, puede usar la autenticación de SQL como solución alternativa.

  3. Configure el firewall del servidor para permitir todas las solicitudes entrantes desde tu dispositivo local.

  4. En la base de datos de Azure SQL, seleccione Editor de Power Query (versión preliminar) y, a continuación, seleccione Nueva consulta.

  5. Pegue y ejecute el script T-SQL que crea la tabla de hoteles. Una clave principal no agrupada es un requisito para el seguimiento de cambios integrado de SQL.

    CREATE TABLE tbl_hotels
     (
         Id TINYINT PRIMARY KEY NONCLUSTERED,
         Modified DateTime NULL DEFAULT '0000-00-00 00:00:00',
         IsDeleted TINYINT,
         HotelName VARCHAR(40),
         Category VARCHAR(20),
         City VARCHAR(30),
         State VARCHAR(4),
         Description VARCHAR(500)
     );
    
  6. Pegue y ejecute el script T-SQL que inserta registros.

     -- Insert rows
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (1, CURRENT_TIMESTAMP, 0,  'Stay-Kay City Hotel', 'Boutique', 'New York', 'NY', 'This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of Americas most attractive and cosmopolitan cities.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (10, CURRENT_TIMESTAMP, 0, 'Countryside Hotel', 'Extended-Stay', 'Durham', 'NC', 'Save up to 50% off traditional hotels. Free WiFi, great location near downtown, full kitchen, washer & dryer, 24\/7 support, bowling alley, fitness center and more.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (11, CURRENT_TIMESTAMP, 0, 'Royal Cottage Resort', 'Extended-Stay', 'Bothell', 'WA', 'Your home away from home. Brand new fully equipped premium rooms, fast WiFi, full kitchen, washer & dryer, fitness center. Inner courtyard includes water features and outdoor seating. All units include fireplaces and small outdoor balconies. Pets accepted.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (12, CURRENT_TIMESTAMP, 0, 'Winter Panorama Resort', 'Resort and Spa', 'Wilsonville', 'OR', 'Plenty of great skiing, outdoor ice skating, sleigh rides, tubing and snow biking. Yoga, group exercise classes and outdoor hockey are available year-round, plus numerous options for shopping as well as great spa services. Newly-renovated with large rooms, free 24-hr airport shuttle & a new restaurant. Rooms\/suites offer mini-fridges & 49-inch HDTVs.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (13, CURRENT_TIMESTAMP, 0, 'Luxury Lion Resort', 'Luxury', 'St. Louis', 'MO', 'Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (14, CURRENT_TIMESTAMP, 0, 'Twin Vortex Hotel', 'Luxury', 'Dallas', 'TX', 'New experience in the making. Be the first to experience the luxury of the Twin Vortex. Reserve one of our newly-renovated guest rooms today.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (15, CURRENT_TIMESTAMP, 0, 'By the Market Hotel', 'Budget', 'New York', 'NY', 'Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (16, CURRENT_TIMESTAMP, 0, 'Double Sanctuary Resort', 'Resort and Spa', 'Seattle', 'WA', '5 Star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in\/out, Fitness Center & espresso in room.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (17, CURRENT_TIMESTAMP, 0, 'City Skyline Antiquity Hotel', 'Boutique', 'New York', 'NY', 'In vogue since 1888, the Antiquity Hotel takes you back to bygone era. From the crystal chandeliers that adorn the Green Room, to the arched ceilings of the Grand Hall, the elegance of old New York beckons. Elevate Your Experience. Upgrade to a premiere city skyline view for less, where old world charm combines with dramatic views of the city, local cathedral and midtown.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (18, CURRENT_TIMESTAMP, 0, 'Ocean Water Resort & Spa', 'Luxury', 'Tampa', 'FL', 'New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (19, CURRENT_TIMESTAMP, 0, 'Economy Universe Motel', 'Budget', 'Redmond', 'WA', 'Local, family-run hotel in bustling downtown Redmond. We are a pet-friendly establishment, near expansive Marymoor park, haven to pet owners, joggers, and sports enthusiasts. Close to the highway and just a short drive away from major cities.');
     INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (20, CURRENT_TIMESTAMP, 0, 'Delete Me Hotel', 'Unknown', 'Nowhere', 'XX', 'Test-case row for change detection and delete detection . For change detection, modify any value, and then re-run the indexer. For soft-delete, change IsDelete from zero to a one, and then re-run the indexer.');
    
    
  7. Ejecute una consulta para confirmar la carga.

    SELECT Description FROM tbl_hotels;
    

    Se mostrarán resultados similares al recorte de pantalla siguiente.

    Recorte de pantalla de los resultados de la consulta que muestra el campo de descripción.

El campo Descripción proporciona el contenido más detallado. Debe dirigirse a este campo para la búsqueda de texto completo y la vectorización opcional.

Ahora que tiene una tabla de base de datos, puede usar Azure Portal, el cliente REST o un SDK de Azure para indexar los datos.

Sugerencia

Otro recurso que proporciona contenido de ejemplo y código se puede encontrar en Azure-Samples/SQL-AI-samples.

Configuración de la canalización del indexador

En este paso, especifique el origen de datos, el índice y el indexador.

  1. Asegúrese de que la base de datos SQL está activa y no está en pausa debido a la inactividad. En Azure Portal, vaya a la página del servidor de bases de datos y compruebe que el estado de la base de datos está en línea. Puede ejecutar una consulta en cualquier tabla para activar la base de datos.

    Recorte de pantalla de la página de estado de la base de datos en Azure Portal.

  2. Asegúrese de que tiene una tabla o vista que cumpla los requisitos de los indexadores y la detección de cambios.

    En primer lugar, solo puede extraer de una sola tabla o vista. Se recomiendan tablas porque admiten la directiva de seguimiento de cambios integrado de SQL, que detecta filas nuevas, actualizadas y eliminadas. Una directiva de marca de agua alta no admite la eliminación de filas y es más difícil de implementar.

    En segundo lugar, la clave principal debe ser un valor único (no se admiten las claves compuestas) y no agrupados.

  3. Cambie al servicio de búsqueda y cree un origen de datos. En Buscar orígenes de datos de administración>, seleccione Agregar origen de datos:

    1. En Tipo de origen de datos, elija Azure SQL Database.
    2. Proporcione un nombre para el objeto de origen de datos en Azure AI Search.
    3. Use las listas desplegables para seleccionar la suscripción, el tipo de cuenta, el servidor, la base de datos, la tabla o la vista, el esquema y el nombre de la tabla.
    4. Para el seguimiento de cambios, se recomienda la directiva de seguimiento de cambios integrada de SQL.
    5. Para la autenticación, se recomienda conectarse con una identidad administrada. El servicio de búsqueda debe tener la pertenencia al rol Colaborador de SQL Server o Colaborador de BASE de datos SQL en la base de datos.
    6. Seleccione Crear para crear el origen de datos.

    Captura de pantalla de la página de creación del origen de datos en Azure Portal.

  4. Inicie el Asistente para importar datos para crear el índice y el indexador.

    1. En la página Información general, seleccione Importar datos.
    2. Seleccione el origen de datos que acaba de crear y seleccione Siguiente.
    3. Omita la página Agregar aptitudes cognitivas (opcional).
    4. En Personalizar índice de destino, asigne un nombre al índice, establezca la clave como su clave principal en la tabla y luego seleccione Retrievable y Searchable para todos los campos. Opcionalmente, añada Filterable y Sortable para cadenas cortas o valores numéricos.
    5. En Crear un indexador, asigne un nombre al indexador y seleccione Enviar.

Comprobación del estado del indexador

Para supervisar el estado del indexador y el historial de ejecución, compruebe el historial de ejecución del indexador en Azure Portal, o envíe una API de RESTObtener estado del indexador

  1. En la página del servicio de búsqueda, abra Administración de búsqueda>indexadores.

  2. Seleccione un indexador para acceder al historial de configuración y ejecución.

  3. Seleccione un trabajo de indexador específico para ver detalles, advertencias y errores.

El historial de ejecución contiene como máximo las 50 ejecuciones completadas más recientemente en orden cronológico inverso (la ejecución más reciente aparece en primer lugar).

Indexación de filas nuevas, cambiadas y eliminadas

Si la base de datos SQL admite el seguimiento de cambios, un indexador de búsqueda puede seleccionar solo el contenido nuevo y actualizado en las ejecuciones posteriores del indexador.

Para habilitar la indexación incremental, establezca la propiedad "dataChangeDetectionPolicy" en la definición del origen de datos. Esta propiedad indica al indexador qué mecanismo de seguimiento de cambios se usa en la tabla o vista.

Para los indexadores de Azure SQL, hay dos directivas de detección de cambios:

  • "SqlIntegratedChangeTrackingPolicy" (solo se aplica a tablas)

  • "HighWaterMarkChangeDetectionPolicy" (funciona para vistas)

Directiva de seguimiento de cambios integrada de SQL

Se recomienda usar "SqlIntegratedChangeTrackingPolicy" por su eficacia y su capacidad para identificar las filas eliminadas.

Requisitos de base de datos:

  • Azure SQL Database o SQL Managed Instance. SQL Server 2016 o posterior si usa una máquina virtual de Azure.
  • La base de datos debe tener habilitado el seguimiento de cambios
  • Solo tablas (vistas no).
  • Las tablas no se pueden agrupar en clúster. Para cumplir este requisito, quite el índice agrupado y vuelva a crearlo como índice no agrupado. Esta solución alternativa suele degradar el rendimiento. La duplicación de contenido en una segunda tabla dedicada al procesamiento del indexador puede ser una mitigación útil.
  • Las tablas no pueden estar vacías. Si usa TRUNCATE TABLE para borrar filas, un restablecimiento y la repetición del indexador no quitarán los documentos de búsqueda correspondientes. Para quitar documentos de búsqueda huérfanos, debe indexarlos con una acción de eliminación.
  • La clave principal no puede ser una clave compuesta (que contenga más de una columna).
  • La clave principal debe ser no agrupada si desea la detección de eliminación.

Las directivas de detección de cambios se agregan a las definiciones de orígenes de datos. Para usar esta directiva, edite la definición del origen de datos en Azure Portal o use REST para actualizar el origen de datos de la siguiente manera:

POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: admin-key
    {
        "name" : "myazuresqldatasource",
        "type" : "azuresql",
        "credentials" : { "connectionString" : "connection string" },
        "container" : { "name" : "table name" },
        "dataChangeDetectionPolicy" : {
            "@odata.type" : "#Microsoft.Azure.Search.SqlIntegratedChangeTrackingPolicy"
        }
    }

Al usar una directiva de seguimiento de cambios integrada de SQL, no especifique una directiva de detección de eliminación de datos independiente. La directiva de seguimiento de cambios integrada de SQL tiene compatibilidad integrada para identificar las filas eliminadas. Sin embargo, para que las filas eliminadas se detecten automáticamente, la clave de documento del índice de búsqueda debe ser la misma que la clave principal de la tabla SQL y la clave principal debe ser no agrupada.

Directiva de detección de cambios de límite superior

Esta directiva de detección de cambios se basa en una columna de "marca de límite superior" de la tabla o vista que captura la versión o la hora en que se actualizó por última vez una fila. Si usa una vista, debe usar una directiva de marca de límite superior.

La columna de marca de límite superior debe cumplir los siguientes requisitos:

  • Todas las inserciones especifican un valor para la columna.
  • Todas las actualizaciones de un elemento también cambian el valor de la columna.
  • El valor de esta columna aumenta con cada inserción o actualización.
  • Las consultas con las cláusulas WHERE y ORDER BY siguientes se pueden ejecutar de forma eficaz: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column].

Nota:

Se recomienda encarecidamente usar el tipo de datos rowversion para la columna de marca de límite superior. Si se utiliza cualquier otro tipo de datos, no se garantiza que el seguimiento de cambios capture todos los cambios en el caso de transacciones que se ejecutan simultáneamente con una consulta de indexador. Cuando se usa rowversion en una configuración con réplicas de solo lectura, debe apuntar el indexador hacia la réplica principal. Solo se puede usar una réplica principal para escenarios de sincronización de datos.

Las directivas de detección de cambios se agregan a las definiciones de orígenes de datos. Para usar esta directiva, cree o actualice el origen de datos de la siguiente manera:

POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: admin-key
    {
        "name" : "myazuresqldatasource",
        "type" : "azuresql",
        "credentials" : { "connectionString" : "connection string" },
        "container" : { "name" : "table or view name" },
        "dataChangeDetectionPolicy" : {
            "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
            "highWaterMarkColumnName" : "[a rowversion or last_updated column name]"
        }
    }

Nota:

Si la tabla de origen no tiene un índice en la columna de marca de agua alta, las consultas usadas por el indexador de SQL pueden agotar el tiempo de espera. En concreto, la cláusula ORDER BY [High Water Mark Column] requiere un índice para ejecutarse de forma eficaz cuando la tabla contiene muchas filas.

convertHighWaterMarkToRowVersion

Si usa un tipo de datos rowversion para la columna de marca de límite superior, considere la posibilidad de configurar la propiedad convertHighWaterMarkToRowVersion en la configuración indexador. Si se establece esta propiedad en true, se produce el comportamiento siguiente:

  • Utilice el tipo de datos rowversion para la columna de marca de límite superior en la consulta SQL del indexador. El uso del tipo de datos correcto mejora el rendimiento de las consultas de indexador.

  • Reste 1 del valor rowversion antes de que se ejecute la consulta de indexador. Las vistas con uniones de uno a muchos pueden tener filas con valores de la versión de fila duplicadas. Restar 1 garantiza que la consulta de indexador no pierde estas filas.

Para habilitar esta propiedad, cree o actualice el indexador con la siguiente configuración:

    {
      ... other indexer definition properties
     "parameters" : {
            "configuration" : { "convertHighWaterMarkToRowVersion" : true } }
    }

queryTimeout

Si se producen errores de tiempo de espera, establezca la opción de configuración del indexador queryTimeout en un valor mayor que el tiempo de espera predeterminado de 5 minutos. Por ejemplo, para establecer el tiempo de espera en 10 minutos, cree o actualice el indexador con la siguiente configuración:

    {
      ... other indexer definition properties
     "parameters" : {
            "configuration" : { "queryTimeout" : "00:10:00" } }
    }

disableOrderByHighWaterMarkColumn

También puede deshabilitar la cláusula ORDER BY [High Water Mark Column]. Sin embargo, esto no es recomendable porque si la ejecución del indizador se interrumpe por un error, el indizador tiene que volver a procesar todas las filas si se ejecuta más tarde, incluso si el indizador ya ha procesado casi todas las filas en el momento en que se interrumpió. Para deshabilitar la cláusula ORDER BY, utilice la configuración disableOrderByHighWaterMarkColumn en la definición del indexador:

    {
     ... other indexer definition properties
     "parameters" : {
            "configuration" : { "disableOrderByHighWaterMarkColumn" : true } }
    }

Directiva de detección de eliminación de columna de eliminación temporal

Cuando se eliminan filas de la tabla de origen, probablemente le interesará eliminar dichas filas del índice de búsqueda. Si usa la directiva de seguimiento de cambios integrada de SQL, esto se lleva a cabo automáticamente. Sin embargo, la directiva el seguimiento de cambios de marca de límite superior no le ayuda con las filas eliminadas. ¿Qué debe hacer?

Si las filas se quitan físicamente de la tabla, Azure AI Search no tiene forma de deducir la presencia de registros que ya no existen. Sin embargo, puede utilizar la técnica de "eliminación temporal" para eliminar filas lógicamente sin quitarlas de la tabla. Agregue una columna a la tabla o vista y marque filas como eliminadas mediante esa columna.

Cuando use la técnica de la eliminación temporal, puede especificar la directiva de eliminación temporal de la manera que se indica a continuación al crear o actualizar el origen de datos:

    {
        …,
        "dataDeletionDetectionPolicy" : {
           "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
           "softDeleteColumnName" : "[a column name]",
           "softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
        }
    }

softDeleteMarkerValue debe ser una cadena en la representación JSON de su origen de datos. Use la representación de cadena del valor real. Por ejemplo, si tiene una columna de enteros donde las filas eliminadas se marcan con el valor 1, use "1". Si tiene una columna BIT donde las filas eliminadas se marcan con el valor booleano true, use el literal de cadena "True" o "true", no importan las mayúsculas y minúsculas.

Si va a configurar una directiva de eliminación temporal del Azure Portal, no agregue comillas alrededor del valor del marcador de eliminación temporal. El contenido del campo ya se entiende como una cadena y se traduce automáticamente en una cadena JSON. En los ejemplos anteriores, simplemente escriba 1, True o true en el campo de Azure Portal.

Preguntas más frecuentes

P: ¿Puedo indexar columnas Always Encrypted?

No, los indexadores de Azure AI Search no admiten actualmente columnas Always Encrypted.

P: ¿Puedo usar un indizador de SQL Azure con Bases de datos SQL que se ejecutan en máquinas virtuales de IaaS en Azure?

Sí. Sin embargo, debe permitir que el servicio de búsqueda se conecte a su base de datos. Para más información, consulte el artículo Configuración de una conexión desde un indexador de Azure AI Search a SQL Server en una máquina virtual de Azure.

P: ¿Puedo usar un indizador de SQL Azure con Bases de datos SQL que se ejecutan localmente?

No directamente. No se recomienda ni se admite una conexión directa, ya que requeriría abrir las bases de datos al tráfico de Internet. Los clientes han tenido éxito con este escenario mediante tecnologías puente como Azure Data Factory. Para más información, consulte Inserción de datos en un índice de Azure AI Search mediante el uso de Azure Data Factory.

P: ¿Puedo usar una réplica secundaria en un clúster de conmutación por error como un origen de datos?

Depende. Para la indexación completa de una tabla o vista, puede usar una réplica secundaria.

Para la indexación incremental, Azure AI Search admite dos directivas de detección de cambios: seguimiento de cambios integrado de SQL y marca de límite superior.

En las réplicas de solo lectura, la SQL Database no admite el seguimiento de cambios integrado. Por tanto, debe usar la directiva Marca de límite superior.

La recomendación estándar es usar el tipo de datos rowversion para la columna de marca de límite superior. Pero el uso de rowversion se basa en la función MIN_ACTIVE_ROWVERSION, que no se admite en las réplicas de solo lectura. Por tanto, si usa rowversion debe apuntar el indexador a una réplica principal.

Si intenta usar rowversion en una réplica de solo lectura, obtendrá el siguiente error:

"No se admite el uso de una columna rowversion para el seguimiento de cambios en réplicas de disponibilidad secundarias (de solo lectura). Actualice el origen de datos y especifique una conexión con la réplica de disponibilidad principal. La propiedad actual de "Updateability" de la base de datos es "READ_ONLY".

P: ¿Puedo usar una columna alternativa, que no sea rowversion, para el seguimiento de los cambios de marca de límite superior?

No se recomienda. Solo rowversion permite la sincronización de datos confiable. Sin embargo, dependiendo de la lógica de su aplicación, puede ser seguro si:

  • Se puede asegurar de que, cuando se ejecuta el indexador, no hay ninguna transacción pendiente en la tabla que se indexa (por ejemplo, todas las actualizaciones de tabla tienen lugar como un lote según una programación y la programación del indexador de Azure AI Search está establecida para evitar la superposición con la programación de las actualizaciones de tabla).

  • Realiza una reindexación completa periódicamente para incluir cualquier fila omitida.