Die Indexierungswarteschlangen für Google Cloud Search

Mit dem Connector SDK und der Cloud Search API können Sie Cloud Search-Indexierungswarteschlangen erstellen. Mit diesen Warteschlangen können Sie:

  • 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 Indexieren des Elements ist ein asynchroner Fehler aufgetreten und der Vorgang muss neu ausgeführt werden.
  • MODIFIED: Das Element wurde zuvor indexiert, hat sich aber im Repository geändert.
  • NEW_ITEM: Der Artikel ist noch nicht indexiert.
  • ACCEPTED: Das Element wurde zuvor indexiert und hat sich nicht geändert.

Bei Elementen mit demselben Status haben diejenigen Vorrang, 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 entsprechen REST API-Aufrufen. Entsprechende SDK-Aufrufe finden Sie unter Vorgänge in der Warteschlange (Connector SDK).

Übersicht über die Cloud Search-Indexierung
Abbildung 1. Indexierungsschritte zum Hinzufügen oder Aktualisieren eines Elements
  1. Der Inhaltsconnector verwendet items.push, um Metadaten und Hashes in eine Warteschlange zu übertragen.
    • Wenn der Connector einen Push-Vorgang type oder contentHash enthält, wird der Status von Cloud Search bestimmt.
    • Unbekannte Elemente erhalten den Status NEW_ITEM.
    • Vorhandene Elemente mit übereinstimmenden Hashes bleiben ACCEPTED.
    • Vorhandene Elemente mit unterschiedlichen Hashes 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 zum Indexieren der Elemente. Ein Element wechselt nach erfolgreicher Verarbeitung in den Status ACCEPTED.

Elemente löschen

Bei der Strategie für vollständiges Durchlaufen werden zwei Warteschlangen verwendet, um Elemente zu indexieren und Löschungen zu erkennen. Abbildung 2 zeigt den zweiten Durchlauf in dieser Strategie.

Übersicht über die Cloud Search-Indexierung
Abbildung 2. Elemente löschen
  1. Beim ersten Durchlauf werden Elemente vom Connector als NEW_ITEM in die Warteschlange A verschoben. Jedes Element erhält das Label „A.“.
  2. Der Connector fragt Warteschlange A ab und indexiert die Elemente.
  3. Beim zweiten vollständigen Durchlauf werden Elemente vom Connector in die Warteschlange B verschoben.
    • Unbekannte Artikel erhalten das Label „B“ und den Status NEW_ITEM.
    • Bei vorhandenen Elementen mit übereinstimmenden Hashes wird das Label in „B“ geändert und sie bleiben ACCEPTED.
    • Bei vorhandenen Artikeln mit unterschiedlichen Hashes wird das Label in „B“ geändert und sie werden zu MODIFIED.
  4. Der Connector fragt Warteschlange B ab und indexiert die Elemente.
  5. Schließlich ruft der Connector deleteQueueItems in 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 Builder pushItems, um Elemente zu pushen. Das SDK ruft Elemente automatisch in Prioritätsreihenfolge aus der Warteschlange ab. Dazu wird die Methode getDoc der Klasse Repository verwendet.

Warteschlangenoperationen (REST API)

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

Items.push

Mit dieser Methode werden der Warteschlange IDs hinzugefügt. Das Ergebnis wird durch type bestimmt. Wenn Sie eine neue ID übertragen, wird ein Eintrag mit dem Status NEW_ITEM hinzugefügt. Die optionale Nutzlast wird beim Abrufen 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 festgelegt ist, werden die Einträge reserviert.

„Items.push“ mit Hashwerten

Geben Sie Metadaten- oder Inhalts-Hashwerte in der Push-Anfrage an. Cloud Search vergleicht diese mit 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 er abläuft, neu indexiert oder mit Items.push aufgehoben wird.