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).
- El conector de contenido usa
items.pushpara enviar metadatos y hashes a una cola.- Si el conector incluye un
typeocontentHashde 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.
- Si el conector incluye un
- El conector usa
items.pollpara determinar qué elementos indexar. Cloud Search devuelve elementos en orden de prioridad. - El conector recupera elementos del repositorio y compila solicitudes de la API de Index.
- El conector usa
items.indexpara indexar los elementos. Un elemento ingresa al estadoACCEPTEDdespué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.
- En el recorrido inicial, el conector envía elementos a la "fila A" como
NEW_ITEM. Cada elemento recibe la etiqueta "A". - El conector sondea la cola A y, luego, indexa los elementos.
- 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.
- Los elementos desconocidos reciben la etiqueta "B" y el estado
- El conector sondea la cola B y, luego, indexa los elementos.
- Por último, el conector llama a
deleteQueueItemsen la cola A. Esto borra todos los elementos indexados anteriormente que aún tienen la etiqueta "A". - 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)
- Para enviar: usa
Items.push. - Para sondear, usa
Items.poll.
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.