Referenz zur Cloud Firestore-Indexdefinition

Cloud Firestore erstellt automatisch Indizes, um die gängigsten Abfragetypen zu unterstützen. Sie können jedoch benutzerdefinierte Indizes und Indexüberschreibungen definieren, wie in den Cloud Firestore-Anleitungen beschrieben.

Sie können benutzerdefinierte Indizes in der Firebase-Konsole oder über die CLI erstellen, ändern und bereitstellen. Bearbeiten Sie über die CLI Ihre Indexkonfigurationsdatei mit dem Standarddateinamen firestore.indexes.json und stellen Sie sie mit dem firebase deploy Befehl bereit.

Sie können Indizes mit der CLI mithilfe firebase firestore:indexes exportieren.

Eine Indexkonfigurationsdatei definiert ein Objekt, das ein indexes Array und ein optionales fieldOverrides Array enthält. Hier ist ein Beispiel:

{
  // Required, specify compound indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    }
  ],

  // Optional, disable indexes or enable single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "myBigMapField",
      // We want to disable indexing on our big map field, and so empty the indexes array
      indexes: []
    }
  ]
}

Stellen Sie eine Indexkonfiguration bereit

Stellen Sie Ihre Indexkonfiguration mit dem firebase deploy -Befehl bereit. Wenn Sie nur Indizes für die in Ihrem Projekt konfigurierten Datenbanken bereitstellen möchten, fügen Sie das Flag --only firestore hinzu. Weitere Informationen finden Sie in der Optionsreferenz für diesen Befehl .

Um bereitgestellte Indizes aufzulisten, führen Sie den firebase firestore:indexes aus. Fügen Sie das Flag --database=<databaseID> hinzu, um Indizes für eine andere Datenbank als die Standarddatenbank Ihres Projekts aufzulisten.

Wenn Sie mit der Firebase-Konsole Änderungen an den Indizes vornehmen, stellen Sie sicher, dass Sie auch Ihre lokale Indexdatei aktualisieren. Weitere Informationen zum Verwalten von Indizes finden Sie in den Cloud Firestore-Anleitungen .

JSON-Format

Indizes

Das Schema für ein Objekt im indexes Array lautet wie folgt. Optionale Eigenschaften werden mit dem ? gekennzeichnet. Charakter.

Beachten Sie, dass Cloud Firestore-Dokumentfelder nur in einem Modus indiziert werden können. Daher kann ein Feldobjekt nicht sowohl die Eigenschaften order als auch arrayConfig enthalten.

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  queryScope: string       // One of "COLLECTION", "COLLECTION_GROUP"
  fields: array
    fieldPath: string
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

FieldOverrides

Das Schema für ein Objekt im fieldOverrides Array lautet wie folgt. Optionale Eigenschaften werden mit dem ? gekennzeichnet. Charakter.

Beachten Sie, dass Cloud Firestore-Dokumentfelder nur in einem Modus indiziert werden können. Daher kann ein Feldobjekt nicht sowohl die Eigenschaften order als auch arrayConfig enthalten.

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  fieldPath: string
  ttl?: boolean            // Set specified field to have TTL policy and be eligible for deletion
  indexes: array           // Use an empty array to disable indexes on this collectionGroup + fieldPath
    queryScope: string     // One of "COLLECTION", "COLLECTION_GROUP"
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

TTL-Richtlinie

Eine TTL-Richtlinie kann mithilfe des fieldOverrides Arrays wie folgt aktiviert oder deaktiviert werden:

  // Optional, disable index single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "ttlField",
      ttl: "true",  // Explicitly enable TTL on this Field.
      // Disable indexing so empty the indexes array
      indexes: []
    }
  ]

So behalten Sie die Standardindizierung im Feld bei und aktivieren eine TTL-Richtlinie:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

Weitere Informationen zu Time-to-Live-Richtlinien (TTL) finden Sie in der offiziellen Dokumentation .