Colas de indexación de Google Cloud Search

El SDK de conector y la API de REST de Cloud Search permiten crear colas de indexación de Cloud Search que se usan para realizar las tareas siguientes:

  • Mantener el estado por documento (estado, valores de hash, etc.), que se puede usar para tener el índice sincronizado con tu repositorio

  • Mantener una lista de elementos para indexar a medida que se detecten durante el proceso de recorrido

  • Priorizar elementos en colas según su estado

  • Mantener información de estado adicional para una integración eficiente, como puntos de control, tokens de cambio, etcétera

Estado y prioridad

La prioridad de un documento en una cola se basa en su código de ItemStatus. A continuación, se muestran los códigos ItemStatus posibles en orden de prioridad para su manejo (del primero al último):

  • ERROR: elemento respecto del cual se produjo un error asíncrono durante el proceso de indexación y debe volver a indexarse.

  • MODIFIED: elemento que ya se indexó y se modificó en el repositorio desde la última indexación.

  • NEW_ITEM: elemento que no está indexado.

  • ACCEPTED: documento que ya se indexó y no se modificó en el repositorio desde la última indexación.

Cuando dos elementos de una cola tienen el mismo estado, se otorga mayor prioridad a los que estuvieron en la cola durante más tiempo.

Operaciones de cola (SDK de conector)

El SDK de conector de contenido proporciona operaciones para enviar elementos a una cola y extraerlos de ella.

Para incluir un elemento en un paquete y enviarlo a una cola, usa la clase de compilador pushItems.

No debes realizar ninguna acción específica si quieres extraer elementos de una cola para procesarlos. El SDK extrae los elementos de la cola de manera automática, en orden de prioridad, con el método getDoc de la clase Repository.

Operaciones de cola (API de REST)

La API de REST proporciona los dos métodos siguientes para enviar elementos a una cola y extraerlos de ella:

  • Para enviar un elemento a una cola, usa Items.push.
  • Para consultar elementos en la cola, usa Items.poll.

También puedes usar Items.index para enviar elementos a una cola durante la indexación. Los elementos que se envían a la cola durante la indexación no requieren un type y reciben automáticamente el estado ACCEPTED.

Items.push

El método Items.push agrega varios ID a la cola. Se puede llamar a este método con un valor de type específico que determina el resultado de la operación de envío. Para obtener una lista de valores type, consulta el campo item.type en el método Items.push.

Cuando se envía un ID nuevo, se agrega una entrada nueva con un código de ItemStatus de NEW_ITEM.

En todos los casos, la carga útil opcional se almacena, se trata como un valor opaco y se devuelve desde Items.poll.

Cuando se consulta un elemento, se lo reserva, lo que significa que no se puede mostrar con otra llamada a Items.poll. Si usas Items.push con type como NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE, se anula la reserva de las entradas consultadas. Para obtener más información sobre las entradas reservadas y no reservadas, consulta la sección Items.poll.

Items.push con hash

La API de REST de Cloud Search admite la especificación de metadatos y valores de hash de contenido en las solicitudes Items.index. En lugar de especificar type, los metadatos o los valores de hash de contenido se pueden especificar con una solicitud de envío. La cola de indexación de Cloud Search compara los valores de hash proporcionados con los valores almacenados disponibles y el elemento en la fuente de datos. Si no coinciden, esa entrada se marca como MODIFIED. Si un elemento correspondiente no existe en el índice, el estado es NEW_ITEM.

Items.poll

El método Items.poll recupera las entradas de mayor prioridad de la cola. Los valores de estado solicitados y mostrados indican los estados de las colas de prioridad solicitadas o el estado de los ID mostrados.

De forma predeterminada, se pueden mostrar entradas de cualquier sección de la cola, según su prioridad. Cada entrada que se muestra se reserva, y otras llamadas a Items.poll no la muestran hasta que se cumpla una de las siguientes condiciones:

  • Que se agote el tiempo de la reserva.
  • Que Items.index vuelva a colocar la entrada en la cola.
  • Que se llame a Items.push con un valor de type de NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE.