Colas de indexación de Google Cloud Search

El SDK de Connector y la API de Cloud Search admiten la creación de colas de indexación de Cloud Search. Usa estas colas para lo siguiente:

  • Mantener el estado por documento (estado, hashes, etc.) para mantener el índice sincronizado
  • Mantener una lista de elementos para indexar, a medida que se descubren durante el recorrido
  • Priorizar elementos según su estado
  • Mantener información de estado, como puntos de control y tokens de cambio

Una cola es una etiqueta asignada a un elemento indexado (p.ej., "default").

Estado y prioridad

La prioridad de un documento depende de su código de ItemStatus. Los códigos posibles, en orden de prioridad (de mayor a menor), son los siguientes:

  • ERROR: El elemento encontró un error asíncrono y debe volver a indexarse.
  • MODIFIED: El elemento ya se indexó, pero cambió en el repositorio.
  • NEW_ITEM: El elemento aún no se indexó.
  • ACCEPTED: El elemento ya se indexó y no se modificó.

En el caso de los elementos con el mismo estado, se les otorga mayor prioridad a los que estuvieron en la cola durante más tiempo.

Indexa un elemento nuevo o modificado

En la figura 1, se muestran los pasos para indexar un elemento nuevo o modificado con una cola de indexación. Estos pasos reflejan las llamadas a la API de REST. Para ver los equivalentes del SDK, consulta Operaciones de cola (SDK del conector).

Descripción general de la indexación de Cloud Search
Figura 1: Pasos de indexación para agregar o actualizar un elemento
  1. El conector de contenido usa items.push para enviar metadatos y hashes a una cola.
    • Si el conector incluye un type o contentHash de envío, Cloud Search determina el estado.
    • Los elementos desconocidos reciben el estado NEW_ITEM.
    • Los elementos existentes con hashes coincidentes permanecen como ACCEPTED.
    • Los elementos existentes con diferentes hashes se convierten en MODIFIED.
  2. El conector usa items.poll para determinar qué elementos indexar. Cloud Search devuelve elementos en orden de prioridad.
  3. El conector recupera elementos del repositorio y compila solicitudes de la API de Index.
  4. El conector usa items.index para indexar los elementos. Un elemento ingresa al estado ACCEPTED después de un procesamiento exitoso.

Cómo borrar un elemento

La estrategia de recorrido completo usa dos colas para indexar elementos y detectar eliminaciones. En la figura 2, se muestra el segundo recorrido de esta estrategia.

Descripción general de la indexación de Cloud Search
Figura 2: Cómo borrar elementos
  1. En el recorrido inicial, el conector envía elementos a la "fila A" como NEW_ITEM. Cada elemento recibe la etiqueta "A".
  2. El conector sondea la cola A y, luego, indexa los elementos.
  3. En el segundo recorrido completo, el conector envía elementos a la "fila B".
    • Los elementos desconocidos reciben la etiqueta "B" y el estado NEW_ITEM.
    • Los elementos existentes con hashes coincidentes cambian su etiqueta a "B" y permanecen en ACCEPTED.
    • Los elementos existentes con diferentes hashes cambian su etiqueta a "B" y se convierten en MODIFIED.
  4. El conector sondea la cola B y, luego, indexa los elementos.
  5. Por último, el conector llama a deleteQueueItems en la cola A. Esto borra todos los elementos indexados anteriormente que aún tienen la etiqueta "A".
  6. Los recorridos posteriores intercambian los roles de las dos colas.

Operaciones de cola (SDK de conector)

Usa el compilador pushItems para enviar elementos. El SDK extrae automáticamente elementos de la fila en orden de prioridad con el método getDoc de la clase Repository.

Operaciones de cola (API de REST)

También puedes usar Items.index para enviar elementos durante la indexación. Estos elementos reciben el estado ACCEPTED automáticamente.

Items.push

Este método agrega IDs a la cola. El elemento type determina el resultado. Cuando se envía un ID nuevo, se agrega una entrada con el estado NEW_ITEM. La carga útil opcional se devuelve durante la votación.

Los elementos sondeados se reservan y no se pueden mostrar con otras llamadas de sondeo. Usar Items.push con type establecido en NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE cancela la reserva de las entradas.

Items.push con hash

Especifica metadatos o hashes de contenido en la solicitud push. Cloud Search compara estos valores con los valores almacenados. Si no coinciden, la entrada se convierte en MODIFIED. Los IDs que no coinciden y no existen se convierten en NEW_ITEM.

Items.poll

Este método recupera las entradas de alta prioridad. Cada entrada que se devuelve se reserva hasta que se agota el tiempo de espera, se vuelve a indexar o se anula la reserva con Items.push.