Die Indexierungswarteschlangen für Google Cloud Search

Mit dem Connector SDK und der Cloud Search API können Sie Cloud Search-Indexierungswarteschlangen erstellen. Diese Warteschlangen können für folgende Zwecke verwendet werden:

  • Dokumentzustand beibehalten, z. B. den Status oder Hashwerte. Mithilfe des Zustands können Sie den Index auf Ihr Repository abstimmen.
  • Eine Liste der Elemente verwalten, die während des Durchlaufens als erkannt indexiert werden sollen.
  • Elemente anhand ihres Status priorisieren.
  • Statusinformationen wie Checkpoints und Änderungstokens verwalten.

Eine Warteschlange ist ein Label, das einem indexierten Element zugewiesen wird (z.B. „default“).

Status und Priorität

Die Priorität eines Dokuments hängt von seinem ItemStatus Code ab. Mögliche Codes in der Reihenfolge der Priorität (höchste bis niedrigste):

  • ERROR: Beim Element ist ein asynchroner Fehler aufgetreten und es muss neu indexiert werden.
  • MODIFIED: Das Element wurde zuvor indexiert, hat sich aber im Repository geändert.
  • NEW_ITEM: Das Element wurde noch nicht indexiert.
  • ACCEPTED: Das Element wurde zuvor indexiert und hat sich nicht geändert.

Bei Elementen mit demselben Status haben diejenigen eine höhere Priorität, die sich am längsten in der Warteschlange befinden.

Neues oder geändertes Element indexieren

Abbildung 1 zeigt die Schritte zum Indexieren eines neuen oder geänderten Elements mithilfe einer Indexierungswarteschlange. Diese Schritte beziehen sich auf REST API-Aufrufe. Entsprechende SDK-Aufrufe finden Sie unter Vorgänge in der Warteschlange (Connector SDK).

Cloud Search-Indexierung – Übersicht
Abbildung 1. Indexierungsschritte zum Hinzufügen oder Aktualisieren eines Elements
  1. Der Content-Connector verwendet items.push , um Metadaten und Hashwerte in eine Warteschlange zu verschieben.
    • Wenn der Connector einen Push type oder contentHash enthält, wird der Status von Cloud Search bestimmt.
    • Unbekannte Elemente erhalten den Status NEW_ITEM.
    • Vorhandene Elemente mit übereinstimmenden Hashwerten bleiben ACCEPTED.
    • Vorhandene Elemente mit unterschiedlichen Hashwerten werden zu MODIFIED.
  2. Der Connector verwendet items.poll , um zu bestimmen, welche Elemente indexiert werden sollen. Cloud Search gibt Elemente in der Reihenfolge ihrer Priorität zurück.
  3. Der Connector ruft Elemente aus dem Repository ab und erstellt Index API-Anfragen.
  4. Der Connector verwendet items.index um die Elemente zu indexieren. Nach der erfolgreichen Verarbeitung wechselt ein Element in den Status ACCEPTED.

Elemente löschen

Bei der Strategie des vollständigen Durchlaufs werden zwei Warteschlangen verwendet, um Elemente zu indexieren und Löschvorgänge zu erkennen. Abbildung 2 zeigt den zweiten Durchlauf bei dieser Strategie.

Cloud Search-Indexierung – Übersicht
Abbildung 2. Elemente löschen
  1. Beim ersten Durchlauf verschiebt der Connector Elemente als NEW_ITEM in die Warteschlange A. Jedes Element erhält das Label „A“.
  2. Der Connector fragt die Warteschlange A ab und indexiert die Elemente.
  3. Beim zweiten vollständigen Durchlauf verschiebt der Connector Elemente in die Warteschlange B.
    • Unbekannte Elemente erhalten das Label „B“ und den Status NEW_ITEM.
    • Bei vorhandenen Elementen mit übereinstimmenden Hashwerten wird das Label in „B“ geändert und der Status bleibt ACCEPTED.
    • Bei vorhandenen Elementen mit unterschiedlichen Hashwerten wird das Label in „B“ geändert und der Status wird zu MODIFIED.
  4. Der Connector fragt die Warteschlange B ab und indexiert die Elemente.
  5. Schließlich ruft der Connector deleteQueueItems für die Warteschlange A auf. Dadurch werden alle zuvor indexierten Elemente gelöscht, die noch das Label „A“ haben.
  6. Bei nachfolgenden Durchläufen werden die Rollen der beiden Warteschlangen getauscht.

Vorgänge in der Warteschlange (Connector SDK)

Verwenden Sie den pushItems Builder, um Elemente zu verschieben. Das SDK ruft Elemente automatisch in der Reihenfolge ihrer Priorität aus der Warteschlange ab. Dazu wird die Methode Repository der Klasse getDoc verwendet.

Vorgänge in der Warteschlange (REST API)

Während der Indexierung können Sie Elemente auch mithilfe von Items.index verschieben. Diese Elemente erhalten automatisch den Status ACCEPTED.

Items.push

Mit dieser Methode werden der Warteschlange IDs hinzugefügt. The type bestimmt das Ergebnis. Wenn Sie eine neue ID verschieben, wird ein Eintrag mit dem Status NEW_ITEM hinzugefügt. Die optionale Nutzlast wird während der Abfrage zurückgegeben.

Abgefragte Elemente sind reserviert und können nicht von anderen Abfrageaufrufen zurückgegeben werden. Wenn Sie Items.push verwenden und type auf NOT_MODIFIED, REPOSITORY_ERROR oder REQUEUE festlegen, wird die Reservierung der Einträge aufgehoben.

Items.push mit Hashwerten

Geben Sie in der Push-Anfrage Metadaten oder Content-Hashwerte an. Cloud Search vergleicht diese mit den gespeicherten Werten. Wenn sie nicht übereinstimmen, wird der Eintrag zu MODIFIED. Nicht übereinstimmende IDs, die nicht vorhanden sind, werden zu NEW_ITEM.

Items.poll

Mit dieser Methode werden Einträge mit hoher Priorität abgerufen. Jeder zurückgegebene Eintrag ist reserviert, bis das Zeitlimit überschritten wird, er neu indexiert wird oder die Reservierung mit Items.push aufgehoben wird.