Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Verwalten von Indizes im Cloud Firestore

Cloud Firestore stellt die Abfrageleistung sicher, indem für jede Abfrage ein Index erforderlich ist. Die für die grundlegendsten Abfragen erforderlichen Indizes werden automatisch für Sie erstellt. Während Sie Ihre App verwenden und testen, generiert Cloud Firestore Fehlermeldungen, mit denen Sie zusätzliche Indizes erstellen können, die Ihre App benötigt. Diese Seite beschreibt , wie Ihr verwalten Einfeld und Composite - Indizes.

Erstellen Sie einen fehlenden Index durch eine Fehlermeldung

Wenn Sie eine zusammengesetzte Abfrage mit einer Bereichsklausel versuchen, die keinem vorhandenen Index zugeordnet ist, wird eine Fehlermeldung angezeigt. Die Fehlermeldung enthält einen direkten Link zum Erstellen des fehlenden Index in der Firebase-Konsole.

Folgen Sie dem generierten Link zur Firebase-Konsole, überprüfen Sie die automatisch ausgefüllten Informationen und klicken Sie auf Erstellen .

Verwenden Sie die Firebase-Konsole

So erstellen Sie manuell einen neuen Index über die Firebase-Konsole:

Bild der Firestore-Indizierungsschnittstelle in der Firebase-Konsole

  1. Wechseln Sie zum Abschnitt Cloud Firestore der Firebase-Konsole .
  2. Gehen Sie zur Registerkarte Indizes und klicken Sie auf Index hinzufügen .
  3. Geben Sie den Sammlungsnamen ein und legen Sie die Felder fest, nach denen Sie den Index bestellen möchten.
  4. Klicken Sie auf Erstellen .

Das Erstellen von Indizes kann je nach Größe der Abfrage einige Minuten dauern. Nachdem Sie sie erstellt haben, können Sie Ihre Indizes und ihren Status im Abschnitt Zusammengesetzte Indizes anzeigen. Wenn sie noch erstellt werden, enthält die Firebase-Konsole eine Gebäudestatusleiste.

Indizes entfernen

So löschen Sie einen Index:

  1. Wechseln Sie zum Abschnitt Cloud Firestore der Firebase-Konsole .
  2. Klicken Sie auf die Registerkarte Indizes .
  3. Bewegen Sie den Mauszeiger über den Index, den Sie löschen möchten, und wählen Sie im Kontextmenü die Option Löschen .
  4. Bestätigen Sie, dass Sie es , indem Sie auf Löschen aus dem Alert löschen möchten.

Verwenden Sie die Firebase-CLI

Sie können Indizes auch mit der Firebase-CLI bereitstellen. Führen Sie zunächst firebase init firestore in Ihrem Projektverzeichnis aus. Während des Setups generiert die Firebase-CLI eine JSON-Datei mit den Standardindizes im richtigen Format. Bearbeiten Sie die Datei, um weitere Indizes hinzuzufügen, und stellen Sie sie mit dem Befehl firebase deploy . Wenn Sie nur Indizes bereitstellen möchten, fügen Sie das --only firestore:indexes . Wenn Sie die Indizes über die Firebase-Konsole bearbeiten, müssen Sie auch Ihre lokale Indexdatei aktualisieren. Weitere Informationen finden Sie in der JSON-Indexdefinitionsreferenz .

Indexerstellungszeit

Um einen Index zu erstellen, muss Cloud Firestore den Index einrichten und den Index dann mit vorhandenen Daten füllen. Die Indexerstellungszeit ist die Summe aus Einrichtungszeit und Nachfüllzeit:

  • Das Einrichten eines Index dauert einige Minuten. Die minimale Erstellungszeit für einen Index beträgt einige Minuten, selbst für eine leere Datenbank.

  • Die Nachfüllzeit hängt davon ab, wie viele vorhandene Daten in den neuen Index gehören. Je mehr Feldwerte mit der Indexdefinition übereinstimmen, desto länger dauert das Auffüllen des Index.

Indexerstellungen sind lang laufende Operationen .

Nachdem Sie eine Indexerstellung gestartet haben, weist Cloud Firestore dem Vorgang einen eindeutigen Namen zu. projects/[PROJECT_ID]/databases/(default)/operations/ Operationsnamen werden projects/[PROJECT_ID]/databases/(default)/operations/ vorangestellt, zum Beispiel:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Sie können das Präfix jedoch weglassen, wenn Sie einen Operationsnamen für den Befehl describe angeben.

Auflistung aller lang laufenden Vorgänge

Verwenden Sie den Befehl gcloud firestore operation list , um lang laufende Vorgänge aufzulisten . Dieser Befehl listet laufende und kürzlich abgeschlossene Vorgänge auf. Operationen werden für einige Tage nach Abschluss aufgelistet:

gcloud firestore operations list

Überprüfen Sie den Betriebsstatus

Anstatt alle lang laufenden Vorgänge aufzulisten, können Sie die Details eines einzelnen Vorgangs auflisten:

gcloud firestore operations describe operation-name

Schätzung der Fertigstellungszeit

Als Ihr Betrieb läuft, wird der Wert des siehe state Feld für den Gesamtzustand der Operation.

Eine Anforderung für den Status einer lang laufenden Operation gibt auch die Metriken workEstimated und workCompleted . Diese Metriken werden für die Anzahl der Dokumente zurückgegeben. workEstimated zeigt die geschätzte Gesamtzahl der Dokumente an, die ein Vorgang verarbeiten wird. workCompleted zeigt die Anzahl der bisher verarbeiteten Dokumente an. Nach Abschluss des Vorgangs gibt workCompleted die Gesamtzahl der tatsächlich verarbeiteten Dokumente wieder, die sich möglicherweise vom Wert von workEstimated .

workCompleted durch workEstimated für eine grobe Fortschrittsschätzung. Die Schätzung ist möglicherweise ungenau, da sie von der verzögerten Erfassung von Statistiken abhängt.

Hier ist beispielsweise der Fortschrittsstatus einer Indexerstellung:

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

Wenn eine Operation ausgeführt wird, enthält die Operationsbeschreibung "done": true . Siehe den Wert des state für das Ergebnis der Operation. Wenn das Feld " done in der Antwort nicht festgelegt ist, ist sein Wert false . Hängen Sie nicht von der Existenz des done Werts für laufende Vorgänge ab.

Fehler bei der Indexerstellung

Beim Verwalten von zusammengesetzten Indizes und Ausnahmen für Einzelfeldindizes können Fehler beim Erstellen von Indizes auftreten. Ein Indizierungsvorgang kann fehlschlagen, wenn im Cloud Firestore ein Problem mit den zu indizierenden Daten auftritt. Am häufigsten bedeutet dies, dass Sie ein Indexlimit erreichen . Beispielsweise kann die Operation die maximale Anzahl von Indexeinträgen pro Dokument erreicht haben.

Wenn die Indexerstellung fehlschlägt, wird die Fehlermeldung in der Konsole angezeigt. Nachdem Sie sicher , dass Sie keine schlagen Indexgrenzen , wieder versuchen , Ihre Index - Operation.