Cola de indexación de Google Cloud Search

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

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

  • Mantener una lista de los elementos que se indexarán a medida que se detecten durante el proceso de barrido.

  • Dar prioridad a elementos de las colas según el estado de estos.

  • Mantener información adicional sobre el estado para que la integración sea eficaz, como puntos de control, token de cambio, etc.

Estado y prioridad

La prioridad de un documento en una cola se basa en su ItemStatus código. A continuación puedes ver los posibles ItemStatus código por orden de prioridad (del primero al último procesado):

  • ERROR: el elemento detectó un error asíncrono durante el proceso de indexación y debe volver a indexarse.

  • MODIFIED: elemento que se indexó con anterioridad y que desde entonces se ha modificado en el repositorio desde la última indexación.

  • NEW_ITEM: elemento que no está indexado.

  • ACCEPTED: documento que se indexó con anterioridad y que no ha cambiado en el repositorio desde la última indexación.

Cuando dos elementos de una cola tienen el mismo estado, se da prioridad a los que han estado más tiempo en la cola.

Operaciones de cola (SDK Content Connector)

El SDK Content Connector proporciona operaciones que permiten enviar elementos a una cola o extraerlos de ella.

Para empaquetar y enviar un elemento a una cola, usa la clase constructor pushItems.

No necesitas hacer nada para extraer elementos de una cola y procesarlos, ya que el SDK los extrae automáticamente, por orden de prioridad, utilizando el método getDoc de la clase Repository.

Operaciones de cola (API REST)

La API 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 de la cola, usa Items.poll.

También puedes utilizar Items.index para enviar elementos a la cola durante la indexación. Estos elementos no requieren un valor type y se les asigna automáticamente el estado de ACCEPTED.

Items.push

El método Items.push añade IDs a la cola. Puede realizarse una llamada a este método con un valor type específico que determina el resultado de la operación de envío. Para ver una lista de valores type, consulta el campo item.type del método Items.push.

Al enviar un ID nuevo, se añadirá una nueva entrada con el ItemStatus code de NEW_ITEM.

La carga útil opcional siempre se almacena, se trata como un valor opaco y se devuelve desde Items.poll.

Cuando se consulta un elemento, se reserva, lo que quiere decir que no se puede devolver mediante otra llamada a Items.poll. Si se usa Items.push con type y se le asignan los valores NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE, se anulará 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 hashes

La API REST de Cloud Search permite especificar metadatos y valores de hash de contenido en solicitudes Items.index. En lugar de especificar type, se pueden especificar los metadatos y valores de hash de contenido 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 con el elemento en la fuente de datos. Si no coinciden, esa entrada se marcará como MODIFIED. Si no hay un elemento correspondiente en el índice, el estado será NEW_ITEM.

Items.poll

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

De forma predeterminada, pueden devolverse las entradas de cualquier sección de la cola, según la prioridad. Cada entrada devuelta se reserva y no se devolverá con ninguna otra llamada a Items.poll hasta que se cumpla uno de los siguientes casos:

  • Se agota el tiempo de la reserva.
  • Items.index vuelve a poner la entrada en la cola.
  • Se realiza una llamada a Items.push asignando a type los valores NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE.