Connector SDK e l'API Google Cloud Search consentono di creare Cloud Search Code di indicizzazione utilizzate per eseguire le seguenti attività:
Mantenere lo stato di ogni documento (stato, valori hash e così via), che può essere per mantenere sincronizzato l'indice con il repository.
Mantieni un elenco di elementi da indicizzare come rilevati durante l'attraversamento e il processo di sviluppo.
Assegna una priorità agli elementi in coda in base allo stato degli articoli.
Mantenere ulteriori informazioni sullo stato per un'integrazione efficiente, ad esempio checkpoint, modifiche al token e così via.
Una coda è un'etichetta assegnata a un elemento indicizzato, ad esempio "predefinito" per coda predefinita o "B" per la coda B.
Stato e priorità
La priorità di un documento in una coda si basa sul suo
ItemStatus
le API nel tuo codice. Di seguito sono riportate le possibili
ItemStatus
codici in ordine di priorità (gestiti dal primo all'ultimo):
ERROR
- Si è verificato un errore asincrono nell'elemento durante l'indicizzazione processo e deve essere reindicizzata.MODIFIED
- Elemento che è stato indicizzato in precedenza e successivamente modificato in nel repository dall'ultima indicizzazione.NEW_ITEM
: elemento non indicizzato.ACCEPTED
- Documento che è stato indicizzato in precedenza e che non è stato modificato nel repository dall'ultima indicizzazione.
Quando due elementi in una coda hanno lo stesso stato, viene data una priorità più elevata al elementi in coda da più tempo.
Panoramica dell'utilizzo delle code di indicizzazione per indicizzare un elemento nuovo o modificato
La figura 1 mostra i passaggi per l'indicizzazione di un elemento nuovo o modificato utilizzando un in coda. Questi passaggi mostrano le chiamate API REST. Per le chiamate SDK equivalenti, consulta Operazioni sulle code (SDK Connector).
.- .
Il connettore di contenuti utilizza
items.push
inviare elementi (metadati e hash) a una coda di indicizzazione per stabilire (MODIFIED
,NEW_ITEM
,DELETED
). Nello specifico:- Quando esegui il push, il connettore include esplicitamente un push
type
ocontentHash
. - Se il connettore non include
type
, Cloud Search utilizza automaticamente ilcontentHash
per determinare lo stato dell'articolo. - Se l'elemento è sconosciuto, lo stato dell'articolo è impostato su
NEW_ITEM
. - Se l'articolo esiste e i valori hash corrispondono, lo stato viene mantenuto su
ACCEPTED
. - Se l'elemento esiste e gli hash sono diversi, lo stato diventa
MODIFIED
.
Per ulteriori informazioni su come viene stabilito lo stato degli articoli, consulta le Attraversare i repository GitHub di codice campione Tutorial introduttivo su Cloud Search.
Di solito, il push è associato al trasferimento dei contenuti e/o al rilevamento delle modifiche i processi nel connettore.
- Quando esegui il push, il connettore include esplicitamente un push
Il connettore di contenuti utilizza
items.poll
eseguire il polling della coda per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.Il connettore recupera questi elementi dal repository e crea un indice richieste API.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo dopo Cloud Search termina l'elaborazione dell'elemento.
Un connettore può anche eliminare un elemento se non esiste più nel repository, o esegui di nuovo il push di un elemento se non è stato modificato o se è presente del repository di codice sorgente. Per informazioni sull'eliminazione degli articoli, consulta la .
Panoramica dell'utilizzo delle code di indicizzazione per eliminare un elemento
La strategia full-traversal usa un processo a due code per indicizzare gli elementi e rilevare le eliminazioni. La figura 2 mostra la procedura per eliminare un elemento utilizzando due di indicizzazione in base alle code. Nello specifico, la figura 2 mostra il secondo attraversamento eseguito usando una strategia di attraversamento completo. In questi passaggi vengono usate le chiamate API REST. Per per chiamate SDK equivalenti, consulta Operazioni sulle code (SDK del connettore).
.Durante l'attraversamento iniziale, il connettore di contenuti utilizza
items.push
per eseguire il push di elementi (metadati e hash) in una coda di indicizzazione, "coda A" comeNEW_ITEM
perché non esiste in coda. A ogni elemento viene assegnata l'etichetta "A" per la "coda A". I contenuti sono indicizzati in Cloud Search.Il connettore di contenuti utilizza
items.poll
eseguire il polling della coda A per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.Il connettore recupera questi elementi dal repository e crea un indice richieste API.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo dopo Cloud Search termina l'elaborazione dell'elemento.La
deleteQueueItems
è chiamato "coda B". Tuttavia, nessun elemento è stato inviato alla coda B, quindi non è possibile eliminare nulla.Nel secondo attraversamento completo, il connettore dei contenuti utilizza
items.push
per eseguire il push degli elementi (metadati e hash) nella coda B:- Quando esegui il push, il connettore include esplicitamente un push
type
ocontentHash
. - Se il connettore non include
type
, Cloud Search utilizza automaticamente ilcontentHash
per determinare lo stato dell'articolo. - Se l'elemento è sconosciuto, lo stato dell'elemento è impostato su
NEW_ITEM
e la coda l'etichetta è stata modificata in "B". - Se l'articolo esiste e i valori hash corrispondono, lo stato viene mantenuto su
ACCEPTED
. e l'etichetta della coda diventa "B". - Se l'elemento esiste e gli hash sono diversi, lo stato diventa
MODIFIED
e la coda l'etichetta è stata modificata in "B".
- Quando esegui il push, il connettore include esplicitamente un push
Il connettore di contenuti utilizza
items.poll
eseguire il polling della coda per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.Il connettore recupera questi elementi dal repository e crea un indice richieste API.
Il connettore utilizza
items.index
per indicizzare gli elementi. L'elemento entra nello statoACCEPTED
solo dopo Cloud Search termina l'elaborazione dell'elemento.Infine,
deleteQueueItems
viene richiamato nella coda A per eliminare tutti gli elementi di CCloud Search indicizzati in precedenza hanno ancora la coda "A" dell'etichetta.Con attraversamenti completi successivi, la coda utilizzata per l'indicizzazione mentre la coda usata per l'eliminazione viene scambiata.
Operazioni in coda (SDK Connector)
L'SDK Content Connector fornisce le operazioni per il push degli elementi e il pull elementi da una coda.
Per pacchettizzare un elemento ed eseguirne il push in una coda, utilizza pushItems
Builder.
Non devi fare nulla di specifico per estrarre elementi da una coda
e l'elaborazione dei dati. L'SDK estrae automaticamente gli elementi dalla coda, in ordine di priorità.
utilizzando
Classi Repository
getDoc
:
.
Operazioni sulla coda (API REST)
L'API REST fornisce i due metodi seguenti per eseguire il push di elementi a estrarre elementi da una coda:
- Per eseguire il push di un elemento in una coda, utilizza
Items.push
. - Per eseguire un sondaggio tra gli elementi in coda, utilizza
Items.poll
.
Puoi anche utilizzare
Items.index
per inserire elementi in coda durante l'indicizzazione. Elementi inviati in coda durante
l'indicizzazione non richiede
type
e viene assegnato automaticamente allo stato
ACCEPTED
.
Items.push
La
Items.push
aggiunge ID alla coda. Questo metodo può essere chiamato con un modello
type
che determina il risultato di un'operazione di push. Per un elenco dei valori di type
, consulta
alla
Campo item.type
in Items.push
.
Il push di un nuovo ID comporta l'aggiunta di una nuova voce con un NEW_ITEM
ItemStatus
le API nel tuo codice.
Il payload facoltativo viene sempre archiviato, trattato come un valore opaco e restituito
da
Items.poll
Quando un elemento viene sottoposto a polling, viene prenotato, ovvero non può essere restituito
un'altra chiamata a
Items.poll
Utilizzo
Items.push
con
type
come NOT_MODIFIED
, REPOSITORY_ERROR
o REQUEUE
, annulla prenotazioni
voci sottoposte a polling. Per ulteriori informazioni sulle voci prenotate e non prenotate:
consulta la sezione Items.poll.
Items.push
con hash
L'API Google Cloud Search supporta la specifica di metadati e valori hash dei contenuti.
attivo
Items.index
richieste. Invece di specificare
type
,
i metadati e/o i valori hash dei contenuti
può essere specificato con una richiesta push. La coda di indicizzazione di Cloud Search confronta
i valori hash forniti con i valori memorizzati disponibili con l'elemento nella
origine dati. In caso di mancata corrispondenza, la voce viene contrassegnata come MODIFIED
. Se viene restituito
elemento non esiste nell'indice, lo stato è NEW_ITEM
.
Items.poll
Items.poll recupera le voci con priorità più alta dalla coda. Le API richieste e i valori di stato restituiti indicano gli stati del code richieste di priorità o lo stato degli ID restituiti.
Per impostazione predefinita, possono essere restituite le voci di qualsiasi sezione della coda, in base a
la priorità. Ogni voce restituita è prenotata e non viene restituita da altri
chiamate a
Items.poll
fino a quando non si verifica uno dei seguenti casi:
- La prenotazione scade.
- La voce è stata nuovamente accodata da
Items.index
. Items.push
viene chiamatotype
valore diNOT_MODIFIED
,REPOSITORY_ERROR
oREQUEUE
.