El SDK de conector y la API de Google Cloud Search permiten crear Cloud Search Colas de indexación que se usan para realizar las siguientes tareas:
Conservar el estado por documento (estado, valores de hash, etc.) que se pueden usar para mantener el índice sincronizado con tu repositorio
Conservar una lista de elementos para indexar descubiertos durante el proceso transversal
Priorizar los elementos en colas según el estado del elemento
Conservar información de estado adicional para una integración eficiente, como puntos de control, tokens de cambio, etcétera
Una cola es una etiqueta asignada a un elemento indexado, como “predeterminado” para el cola predeterminada o “B” para la cola B.
Estado y prioridad
La prioridad de un documento en una cola se basa en su
ItemStatus
código. A continuación, se incluyen las posibles
ItemStatus
en orden de prioridad (se manejan del primero al último):
ERROR
: un elemento que encontró un error asíncrono durante el proceso de indexación y debe volver a indexarse.MODIFIED
: un elemento que ya fue indexado y se modificó en el repositorio tras la última indexación.NEW_ITEM
: elemento que no está indexado.ACCEPTED
: Documento que ya se indexó y no se modificó en la desde la última indexación.
Cuando dos elementos en una cola tienen el mismo estado, se otorga mayor prioridad a los elementos que han estado en la cola durante un período más largo.
Descripción general del uso de colas de indexación para indexar un elemento nuevo o modificado
En la Figura 1, se muestran los pasos para indexar un elemento nuevo o modificado con una indexación en la fila. Estos pasos muestran llamadas a la API de REST. Para llamadas al SDK equivalentes, consulta Operaciones de cola (SDK de Connector).
El conector de contenido usa
items.push
para enviar elementos (metadatos y hash) a una cola de indexación para establecer la estado (MODIFIED
,NEW_ITEM
,DELETED
). Más precisamente, sucederá lo siguiente:- Cuando se realiza un envío, el conector incluye explícitamente un
type
ocontentHash
. - Si el conector no incluye el
type
, Cloud Search usa automáticamentecontentHash
para determinar el estado del elemento. - Si el elemento es desconocido, su estado se establece en
NEW_ITEM
. - Si el elemento existe y los valores hash coinciden, el estado se mantiene como
ACCEPTED
. - Si el elemento existe y los hashes difieren, el estado es
MODIFIED
.
Para obtener más información sobre cómo se establece el estado de un artículo, consulta la Explora los repositorios de GitHub código de muestra en la Instructivo para comenzar a usar Cloud Search.
Por lo general, el envío se asocia con el recorrido de contenido o la detección de cambios. procesos en el conector.
- Cuando se realiza un envío, el conector incluye explícitamente un
El conector de contenido usa
items.poll
sondear la cola para determinar los elementos que se indexarán. Cloud Search le indica al conector qué elementos necesitan indexarse más, ordenados primero por código de estado y luego por tiempo en cola.El conector recupera estos elementos del repositorio y compila el índice Solicitudes a la API.
El conector usa
items.index
para indexar los elementos. El elemento solo entra al estadoACCEPTED
después de Cloud Search termine de procesar el elemento correctamente.
Un conector también puede borrar un elemento si ya no existe en el repositorio o volver a enviar un elemento si no está modificado o si hay error del repositorio de código fuente. Para obtener información sobre las eliminaciones de elementos, consulta la siguiente sección.
Descripción general del uso de colas de indexación para borrar un elemento
El estrategia de recorrido completo usa un proceso de dos colas para indexar elementos y detectar eliminaciones. En la Figura 2, se muestran los pasos para borrar un elemento mediante dos colas de indexación. Específicamente, en la Figura 2 se muestra el segundo recorrido realizado con una estrategia de recorrido completo. En estos pasos, se usan las llamadas a la API de REST. Para equivalentes al SDK, consulta Operaciones de cola (SDK de Connector).
En el recorrido inicial, el conector de contenido usa
items.push
para enviar elementos (metadatos y hash) a una cola de indexación, la “cola A” comoNEW_ITEM
, ya que no existe en la cola. A cada elemento se le asigna la etiqueta “A” de la "cola A". El contenido se indexa en Cloud Search.El conector de contenido usa
items.poll
sondear la cola A para determinar los elementos que se indexarán. Cloud Search le indica al conector qué elementos necesitan indexarse más, ordenados primero por código de estado y luego por tiempo en cola.El conector recupera estos elementos del repositorio y compila el índice Solicitudes a la API.
El conector usa
items.index
para indexar los elementos. El elemento solo entra al estadoACCEPTED
después de Cloud Search termine de procesar el elemento correctamente.El
deleteQueueItems
se llama en la "cola B". Sin embargo, no se ha enviado ningún elemento a la cola B, así que no se puede borrar nada.En el segundo recorrido completo, el conector de contenido usa
items.push
para enviar elementos (metadatos y hash) a la cola B:- Cuando se realiza un envío, el conector incluye explícitamente un
type
ocontentHash
. - Si el conector no incluye el
type
, Cloud Search usa automáticamentecontentHash
para determinar el estado del elemento. - Si el elemento es desconocido, su estado se establece en
NEW_ITEM
y la cola etiqueta se cambia a "B". - Si el elemento existe y los valores hash coinciden, el estado se mantiene como
ACCEPTED
. y la etiqueta de la cola se cambia a “B”. - Si el elemento existe y los hashes difieren, el estado será
MODIFIED
y la cola etiqueta se cambia a "B".
- Cuando se realiza un envío, el conector incluye explícitamente un
El conector de contenido usa
items.poll
sondear la cola para determinar los elementos que se indexarán. Cloud Search le indica al conector qué elementos necesitan indexarse más, ordenados primero por código de estado y luego por tiempo en cola.El conector recupera estos elementos del repositorio y compila el índice Solicitudes a la API.
El conector usa
items.index
para indexar los elementos. El elemento solo entra al estadoACCEPTED
después de Cloud Search termine de procesar el elemento correctamente.Finalmente,
deleteQueueItems
se llama en la cola A para borrar todos los elementos de CCloud Search indexados anteriormente que todavía tenemos una cola "A" etiqueta.Con los recorridos completos posteriores, la cola utilizada para indexar y la cola que se usó para borrar se intercambian.
Operaciones de cola (SDK de conector)
El SDK de Content Connector proporciona operaciones para enviar elementos a una cola y extraerlos de ella.
Para empaquetar y enviar un elemento a una cola, usa pushItems
.
de Compute Engine.
No necesitas hacer nada específico si quieres extraer elementos de una cola para procesarlos. En cambio, el SDK extrae elementos automáticamente de la cola, según la prioridad
con el
Repository
getDoc
.
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 sondear elementos en la fila, usa
Items.poll
.
También puedes usar
Items.index
para enviar elementos a una cola durante la indexación. Elementos enviados a la cola durante
la indexación de datos no requieren
type
y se les asigna automáticamente el estado
ACCEPTED
Items.push
El
Items.push
agrega los IDs a la cola. Este método se puede llamar con un
type
que determina el resultado de la operación de envío. Para obtener una lista de los valores type
, consulta
al
Campo item.type
en Items.push
.
Cuando se envía un nuevo ID, se agrega una nueva entrada con un NEW_ITEM
.
ItemStatus
código.
La carga útil opcional siempre se almacena, se trata como un valor opaco y se devuelve
de
Items.poll
Cuando se sondea un elemento, se reserva, por lo que no se puede mostrar a las
otra llamada a
Items.poll
Usando
Items.push
con
type
como NOT_MODIFIED
, REPOSITORY_ERROR
o REQUEUE
, sin reserva
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 Google Cloud Search admite la especificación de metadatos y valores de hash de contenido
activado
Items.index
solicitudes. En lugar de especificar
type
:
los metadatos o los valores de hash de contenido
se puede 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 con el elemento en
fuente de datos. Si no coinciden, esa entrada se marca como MODIFIED
. Si se indica
no existe en el índice, el estado es NEW_ITEM
.
Items.poll
El método Items.poll recupera los datos de entrada de más alta prioridad de la cola. Los procesos solicitados y Los valores de estado devueltos indican los estados de la colas de prioridad solicitadas o el estado de los IDs devueltos.
De forma predeterminada, los datos de entradas de una sección de la cola se pueden mostrar, según la prioridad. Cada entrada devuelta se reserva, y otros no la devuelven
llamadas a
Items.poll
hasta que se cumpla uno de los siguientes casos:
- Que se agote el tiempo de la reserva.
Items.index
vuelve a poner la entrada en la cola.Items.push
se llama con untype
valor deNOT_MODIFIED
,REPOSITORY_ERROR
oREQUEUE
.