Pakiet SDK Connector i interfejs Google Cloud Search API umożliwiają tworzenie kolejek indeksowania Cloud Search, które służą do wykonywania tych zadań:
Utrzymuj stan poszczególnych dokumentów (stan, wartości skrótu itp.), który może być używany do synchronizowania indeksu z repozytorium.
utrzymywać listę elementów do zindeksowania, które zostały wykryte podczas procesu przeszukiwania;
Ustalaj priorytety elementów w kolejkach na podstawie ich stanu.
Utrzymuj dodatkowe informacje o stanie na potrzeby wydajnej integracji, takie jak punkty kontrolne, token zmiany itp.
Kolejka to etykieta przypisana do indeksowanego elementu, np. „default” w przypadku kolejki domyślnej lub „B” w przypadku kolejki B.
Stan i priorytet
Priorytet dokumentu w kolejce zależy od jego ItemStatus
. Poniżej podano możliwe kody
ItemStatus
w kolejności priorytetu (od pierwszego do ostatniego):
ERROR
– podczas indeksowania elementu wystąpił błąd asynchroniczny i należy go ponownie zindeksować.MODIFIED
– element, który był wcześniej indeksowany, a od ostatniego indeksowania został zmodyfikowany w repozytorium.NEW_ITEM
– element, który nie jest indeksowany.ACCEPTED
– dokument, który został wcześniej zindeksowany i nie zmienił się w repozytorium od ostatniego indeksowania.
Gdy 2 elementy w kolejce mają ten sam stan, wyższy priorytet mają elementy, które znajdują się w kolejce najdłużej.
Omówienie używania kolejek indeksowania do indeksowania nowego lub zmienionego elementu
Ilustracja 1 przedstawia etapy indeksowania nowego lub zmienionego elementu za pomocą kolejki indeksowania. Te kroki pokazują wywołania interfejsu API REST. Odpowiedniki wywołań pakietu SDK znajdziesz w artykule Operacje na kolejkach (pakiet SDK łącznika).

Łącznik treści używa
items.push
do przesyłania elementów (metadanych i wartości skrótu) do kolejki indeksowania, aby określić stan elementu (MODIFIED
,NEW_ITEM
,DELETED
). W szczególności:- Podczas wysyłania złącze zawiera wyraźnie push
type
lubcontentHash
. - Jeśli oprogramowanie sprzęgające nie zawiera znacznika
type
, Cloud Search automatycznie używa znacznikacontentHash
do określania stanu elementu. - Jeśli produkt jest nieznany, jego stan jest ustawiony na
NEW_ITEM
. - Jeśli produkt istnieje, a wartości skrótu są zgodne, stan pozostaje
ACCEPTED
. - Jeśli produkt istnieje, a wartości hash są różne, stan zmieni się na
MODIFIED
.
Więcej informacji o tym, jak określa się stan elementu, znajdziesz w przykładowym kodzie Traversing the GitHub repositories w samouczku dla początkujących dotyczącym Cloud Search.
Zwykle jest to związane z procesami przechodzenia przez treści lub wykrywania zmian w łączniku.
- Podczas wysyłania złącze zawiera wyraźnie push
Łącznik treści używa
items.poll
do sprawdzania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje łącznik, które elementy wymagają indeksowania w pierwszej kolejności. Są one sortowane najpierw według kodu stanu, a potem według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania interfejsu API indeksu.
Oprogramowanie sprzęgające używa
items.index
do indeksowania elementów. Element przechodzi w stanACCEPTED
dopiero po pomyślnym zakończeniu przetwarzania przez Cloud Search.
Oprogramowanie sprzęgające może też usunąć element, jeśli nie istnieje już w repozytorium, lub ponownie przesłać element, jeśli nie został zmodyfikowany lub wystąpił błąd repozytorium źródłowego. Więcej informacji o usuwaniu produktów znajdziesz w następnej sekcji.
Omówienie korzystania z kolejek indeksowania do usuwania elementu
Strategia pełnego przechodzenia wykorzystuje proces z 2 kolejkami do indeksowania elementów i wykrywania usunięć. Ilustracja 2 przedstawia kroki usuwania elementu za pomocą 2 kolejek indeksowania. Rysunek 2 przedstawia drugie przejście wykonane przy użyciu strategii pełnego przejścia. W tych krokach używamy wywołań interfejsu API REST. Odpowiedniki wywołań pakietu SDK znajdziesz w artykule Operacje na kolejce (pakiet SDK łącznika).

Podczas pierwszego przejścia łącznik treści używa
items.push
do umieszczania elementów (metadanych i wartości skrótu) w kolejce indeksowania „kolejka A” jakoNEW_ITEM
, ponieważ nie ma ich w kolejce. Każdy element ma etykietę „A” oznaczającą „kolejkę A”. Treści są indeksowane w Cloud Search.Łącznik treści używa
items.poll
do sprawdzania kolejki A w celu określenia elementów do indeksowania. Cloud Search informuje łącznik, które elementy wymagają indeksowania w pierwszej kolejności. Są one sortowane najpierw według kodu stanu, a potem według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania interfejsu API indeksu.
Oprogramowanie sprzęgające używa
items.index
do indeksowania elementów. Element przechodzi w stanACCEPTED
dopiero po pomyślnym zakończeniu przetwarzania przez Cloud Search.Metoda
deleteQueueItems
jest wywoływana w przypadku „kolejki B”. Jednak do kolejki B nie zostały przesłane żadne elementy, więc nie można niczego usunąć.Podczas drugiego pełnego przejścia oprogramowanie sprzęgające treści używa
items.push
do umieszczania elementów (metadanych i wartości skrótu) w kolejce B:- Podczas wysyłania złącze zawiera wyraźnie push
type
lubcontentHash
. - Jeśli oprogramowanie sprzęgające nie zawiera znacznika
type
, Cloud Search automatycznie używa znacznikacontentHash
do określania stanu elementu. - Jeśli element jest nieznany, jego stan zostanie ustawiony na
NEW_ITEM
, a etykieta kolejki zmieni się na „B”. - Jeśli produkt istnieje, a wartości skrótu są zgodne, stan pozostaje
ACCEPTED
, a etykieta kolejki zmienia się na „B”. - Jeśli element istnieje, a wartości hash są różne, stan zmieni się na
MODIFIED
, a etykieta kolejki zostanie zmieniona na „B”.
- Podczas wysyłania złącze zawiera wyraźnie push
Łącznik treści używa
items.poll
do sprawdzania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje łącznik, które elementy wymagają indeksowania w pierwszej kolejności. Są one sortowane najpierw według kodu stanu, a potem według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania interfejsu API indeksu.
Oprogramowanie sprzęgające używa
items.index
do indeksowania elementów. Element przechodzi w stanACCEPTED
dopiero po pomyślnym zakończeniu przetwarzania przez Cloud Search.Na koniec w kolejce A wywoływana jest funkcja
deleteQueueItems
w celu usunięcia wszystkich wcześniej zindeksowanych elementów CCloud Search, które nadal mają etykietę kolejki „A”.Podczas kolejnych pełnych przejść kolejki używane do indeksowania i usuwania są zamieniane.
Operacje na kolejce (pakiet SDK łącznika)
Pakiet SDK łącznika treści udostępnia operacje przesyłania elementów do kolejki i pobierania z niej elementów.
Aby spakować element i przesłać go do kolejki, użyj klasy narzędzia do tworzenia pushItems
.
Nie musisz nic robić, aby pobrać elementy z kolejki do przetworzenia. Zamiast tego pakiet SDK automatycznie pobiera elementy z kolejki w kolejności priorytetów za pomocą metody getDoc
klasy Repository.
Operacje na kolejkach (API REST)
Interfejs REST API udostępnia te 2 metody przesyłania elementów do kolejki i pobierania ich z niej:
- Aby przenieść element do kolejki, użyj
Items.push
. - Aby sprawdzić elementy w kolejce, użyj
Items.poll
.
Możesz też użyć Items.index
, aby podczas indeksowania umieszczać elementy w kolejce. Elementy dodane do kolejki podczas indeksowania nie wymagają type
i automatycznie otrzymują stan ACCEPTED
.
Items.push
Metoda
Items.push
dodaje identyfikatory do kolejki. Tę metodę można wywołać z określoną wartością type
, która określa wynik operacji push. Listę wartości type
znajdziesz w polu item.type
metody Items.push.
Wysłanie nowego identyfikatora powoduje dodanie nowego wpisu z kodem NEW_ITEM
ItemStatus
.
Opcjonalny ładunek jest zawsze przechowywany, traktowany jako nieprzejrzysta wartość i zwracany przez funkcję Items.poll
.
Gdy element jest sprawdzany, jest rezerwowany, co oznacza, że nie można go zwrócić za pomocą innego wywołania funkcji Items.poll
.
Użycie
Items.push
z
type
jako NOT_MODIFIED
, REPOSITORY_ERROR
lub REQUEUE
cofnie rezerwację
sprawdzonych wpisów. Więcej informacji o zarezerwowanych i niezarezerwowanych wpisach znajdziesz w sekcji Items.poll.
Items.push
z haszami
Interfejs Google Cloud Search API obsługuje określanie metadanych i wartości skrótu treści w Items.index
żądaniach. Zamiast określać type
, wartości metadanych lub skrótów treści można określić za pomocą żądania push. Kolejka indeksowania Cloud Search porównuje podane wartości skrótu z wartościami przechowywanymi dostępnymi w przypadku elementu w źródle danych. Jeśli dane się nie zgadzają, wpis jest oznaczony jako MODIFIED
. Jeśli w indeksie nie ma odpowiedniego elementu, stan to NEW_ITEM
.
Items.poll
Metoda Items.poll pobiera z kolejki wpisy o najwyższym priorytecie. Żądane i zwrócone wartości stanu wskazują stan żądanych kolejek priorytetowych lub stan zwróconych identyfikatorów.
Domyślnie mogą być zwracane wpisy z dowolnej sekcji kolejki na podstawie priorytetu. Każdy zwrócony wpis jest zarezerwowany i nie jest zwracany przez inne wywołania funkcji Items.poll
, dopóki nie zostanie spełniony jeden z tych warunków:
- Rezerwacja wygasa.
- Wpis jest ponownie umieszczany w kolejce przez
Items.index
. Items.push
jest wywoływana z wartościątype
NOT_MODIFIED
,REPOSITORY_ERROR
lubREQUEUE
.