L'SDK Connector e l'API Google Cloud Search consentono la creazione di code di coda di indicizzazione Cloud Search utilizzati per eseguire le seguenti attività:
Mantieni lo stato dei singoli documenti (stato, valori hash e così via) che puoi utilizzare per sincronizzare l'indice con il repository.
Gestisci un elenco di elementi da indicizzare come rilevati durante il processo di traversale.
Assegna una priorità agli elementi in coda in base allo stato degli articoli.
Gestisci informazioni aggiuntive sullo stato per un'integrazione efficiente, come checkpoint, token di modifica e così via.
Una coda è un'etichetta assegnata a un elemento indicizzato, ad esempio "predefinita" per la coda predefinita o "B" per la coda B.
Stato e priorità
La priorità di un documento in una coda si basa sul relativo codice ItemStatus
. Di seguito sono riportati i possibili codici ItemStatus
in ordine di priorità (gestiti dal primo all'ultimo):
ERROR
- L'elemento ha riscontrato un errore asincrono durante il processo di indicizzazione e deve essere reindicizzato.MODIFIED
: elemento precedentemente indicizzato e successivamente modificato nel repository dall'ultima indicizzazione.NEW_ITEM
- Elemento non indicizzato.ACCEPTED
: documento precedentemente indicizzato e che non è cambiato nel repository dall'ultima indicizzazione.
Quando due elementi in una coda hanno lo stesso stato, viene assegnata una priorità più alta agli elementi che si trovano in coda per il periodo di tempo più lungo.
Panoramica dell'utilizzo delle code di indicizzazione per indicizzare un elemento nuovo o modificato
La Figura 1 mostra i passaggi per indicizzare un elemento nuovo o modificato utilizzando una coda di indicizzazione. Questi passaggi mostrano le chiamate API REST. Per le chiamate SDK equivalenti, consulta Operazioni di coda (SDK Connector).
Il connettore dei contenuti utilizza
items.push
per inviare gli elementi (metadati e hash) a una coda di indicizzazione al fine di stabilire il loro stato (MODIFIED
,NEW_ITEM
,DELETED
). Nello specifico:- Durante l'invio, il connettore include esplicitamente un push
type
ocontentHash
. - Se il connettore non include
type
, Cloud Search utilizza automaticamentecontentHash
per determinare lo stato dell'elemento. - Se l'articolo è sconosciuto, lo stato dell'articolo viene impostato su
NEW_ITEM
. - Se l'elemento esiste e i valori hash corrispondono, lo stato viene mantenuto come
ACCEPTED
. - Se l'elemento esiste e gli hash sono diversi, lo stato diventa
MODIFIED
.
Per ulteriori informazioni su come viene stabilito lo stato dell'elemento, consulta il codice di esempio per la navigazione nei repository GitHub nel tutorial introduttivo di Cloud Search.
In genere, il push è associato alle procedure di rilevamento delle modifiche e di attraversamento dei contenuti nel connettore.
- Durante l'invio, il connettore include esplicitamente un push
Il connettore di contenuti utilizza
items.poll
per eseguire il polling della coda e determinare gli elementi da indicizzare. Cloud Search indica al connettore gli elementi più necessari da indicizzare, ordinati prima per codice di stato e poi per tempo in coda.Il connettore recupera questi elementi dal repository e crea le richieste dell'API di indicizzazione.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo al termine dell'elaborazione da parte di Cloud Search.
Un connettore può anche eliminare un elemento se non esiste più nel repository, spingere di nuovo un elemento se non è modificato o se si verifica un errore nel repository di origine. Per informazioni sulle eliminazioni di elementi, consulta la sezione successiva.
Panoramica dell'utilizzo delle code di indicizzazione per eliminare un elemento
La strategia di attraversamento completo utilizza un processo con due code per indicizzare gli elementi e rilevare le eliminazioni. La Figura 2 mostra i passaggi per eliminare un elemento utilizzando due code di indicizzazione. Nello specifico, la figura 2 mostra il secondo attraversamento eseguito utilizzando una strategia di attraversamento completo. Questi passaggi utilizzano le chiamate API REST. Per chiamate SDK equivalenti, consulta Operazioni in coda (SDK Connector).
Durante l'attraversamento iniziale, il connettore di contenuti utilizza
items.push
per eseguire il push degli elementi (metadati e hash) in una coda di indicizzazione, la "coda A" comeNEW_ITEM
, in quanto non esiste nella coda. A ogni elemento viene assegnata l'etichetta "A" per la "coda A". I contenuti vengono indicizzati in Cloud Search.Il connettore dei contenuti utilizza
items.poll
per eseguire il polling della coda A al fine di determinare gli elementi da indicizzare. Cloud Search indica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi per tempo in coda.Il connettore recupera questi elementi dal repository e crea le richieste dell'API di indicizzazione.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo al termine dell'elaborazione da parte di Cloud Search.Il metodo
deleteQueueItems
viene chiamato nella "coda B". Tuttavia, nessun elemento è stato inviato alla coda B, quindi non è possibile eliminare nulla.Nel secondo attraversamento completo, il connettore di contenuti utilizza
items.push
per inviare gli elementi (metadati e hash) alla coda B:- Durante l'invio, il connettore include esplicitamente un push
type
ocontentHash
. - Se il connettore non include
type
, Cloud Search utilizza automaticamentecontentHash
per determinare lo stato dell'elemento. - Se l'elemento è sconosciuto, lo stato dell'elemento viene impostato su
NEW_ITEM
e l'etichetta della coda viene modificata in "B". - Se l'elemento esiste e i valori hash corrispondono, lo stato viene mantenuto
ACCEPTED
e l'etichetta della coda viene modificata in "B". - Se l'elemento esiste e gli hash sono diversi, lo stato diventa
MODIFIED
e l'etichetta della coda viene modificata in "B".
- Durante l'invio, il connettore include esplicitamente un push
Il connettore di contenuti utilizza
items.poll
per eseguire il polling della coda e determinare gli elementi da indicizzare. Cloud Search indica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi per tempo in coda.Il connettore recupera questi elementi dal repository e crea le richieste dell'API di indicizzazione.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo al termine dell'elaborazione da parte di Cloud Search.Infine,
deleteQueueItems
viene chiamato nella coda A per eliminare tutti gli elementi di CCloud Search indicizzati in precedenza che hanno ancora un'etichetta coda "A".Con le successive esplorazioni complete, la coda utilizzata per l'indicizzazione e la coda utilizzata per l'eliminazione vengono scambiate.
Operazioni di coda (SDK Connector)
L'SDK Content Connector fornisce operazioni per inviare elementi a una coda e rimuoverli da una coda.
Per pacchettizzare e inviare un elemento a una coda, utilizza la classe del compilatore pushItems
.
Non devi fare nulla di specifico per eseguire il pull degli elementi da una coda per l'elaborazione. L'SDK estrae automaticamente gli elementi dalla coda, in ordine di priorità, utilizzando il metodo getDoc
della classe Repository.
Operazioni di coda (API REST)
L'API REST fornisce i seguenti due metodi per inviare elementi a una coda e recuperarli da una coda:
- Per inviare un elemento a una coda, utilizza
Items.push
. - Per eseguire il polling degli elementi nella coda, utilizza
Items.poll
.
Puoi anche utilizzare Items.index
per eseguire il push degli elementi alla coda durante l'indicizzazione. Gli elementi inviati alla coda durante l'indicizzazione non richiedono un valore type
e viene assegnato automaticamente lo stato ACCEPTED
.
Items.push
Il metodo Items.push
aggiunge ID alla coda. Questo metodo può essere chiamato con un valore
type
specifico che determina il risultato dell'operazione push. Per un elenco dei valori type
, consulta il campo item.type
nel metodo Items.push.
Il push di un nuovo ID comporta l'aggiunta di una nuova voce con un codice NEW_ITEM
ItemStatus
.
Il payload facoltativo viene sempre archiviato, trattato come valore opaco e restituito da Items.poll
.
Quando un elemento viene sottoposto a polling, è prenotato, ovvero non può essere restituito da
un'altra chiamata a
Items.poll
.
Utilizzando
Items.push
con
type
come NOT_MODIFIED
, REPOSITORY_ERROR
o REQUEUE
, annulla la prenotazione
le voci sottoposte a sondaggio. Per ulteriori informazioni sulle voci riservate e non riservate, consulta la sezione Items.poll.
Items.push
con hash
L'API Google Cloud Search supporta la specifica di metadati e valori hash dei contenuti per le richieste Items.index
. Anziché specificare
type
,
i valori hash dei metadati e/o dei contenuti
possono essere specificati con una richiesta push. La coda di indicizzazione di Cloud Search confronta
i valori hash forniti con i valori memorizzati disponibili per l'elemento nell'
origine dati. In caso di mancata corrispondenza, la voce viene contrassegnata come MODIFIED
. Se nell'indice non esiste un elemento corrispondente, lo stato è NEW_ITEM
.
Items.poll
Il metodo Items.poll recupera dalla coda le voci con la priorità più alta. I valori di stato richiesti e restituiti indicano gli stati delle code di priorità richieste o lo stato degli ID restituiti.
Per impostazione predefinita, è possibile restituire le voci di qualsiasi sezione della coda in base alla priorità. Ogni voce restituita è riservata e non viene restituita da altre chiamate a Items.poll
finché non si verifica uno dei seguenti casi:
- La prenotazione scade.
- La voce viene inserita di nuovo in coda da
Items.index
. Items.push
viene chiamato con un valore ditype
pari aNOT_MODIFIED
,REPOSITORY_ERROR
oREQUEUE
.