Colas de indexación de Google Cloud Search

El SDK de conector y la API de Cloud Search permiten crear 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 descubiertos durante el proceso transversal
  • 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., "predeterminada").

Estado y prioridad

La prioridad de un documento depende de su ItemStatus código. 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 está indexado.
  • ACCEPTED: El elemento ya se indexó y no cambió.

En el caso de los elementos con el mismo estado, la prioridad más alta se otorga a aquellos que han estado 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 de 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 envío type o contentHash, Cloud Search determina el estado.
    • Los elementos desconocidos reciben el estado NEW_ITEM.
    • Los elementos existentes con hashes coincidentes permanecen ACCEPTED.
    • Los elementos existentes con hashes diferentes se convierten en MODIFIED.
  2. El conector usa items.poll para determinar qué elementos indexar. Cloud Search muestra los 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.

Borra 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 "cola A" como NEW_ITEM. Cada elemento recibe la etiqueta "A".
  2. El conector consulta la cola A y, luego, indexa los elementos.
  3. En el segundo recorrido completo, el conector envía elementos a la "cola 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 ACCEPTED.
    • Los elementos existentes con hashes diferentes cambian su etiqueta a "B" y se convierten en MODIFIED.
  4. El conector consulta 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 pushItems compilador para enviar elementos. El SDK extrae automáticamente elementos de la cola 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 type determina el resultado. El envío de un ID nuevo agrega una entrada con el estado NEW_ITEM. La carga útil opcional se muestra durante la consulta.

Los elementos consultados están reservados y no se pueden mostrar con otras llamadas de consulta. El uso de Items.push con type establecido en NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE anula la reserva de las entradas.

Items.push con hash

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

Items.poll

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