Referenz für Cloud Firestore-Indexdefinitionen

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

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

Sie können Indexe mit firebase firestore:indexes über die Befehlszeile exportieren.

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

{
  // Required, specify compound and vector indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    },
    {
      collectionGroup: "coffee-beans",
      queryScope: "COLLECTION",
      fields: [
        {
          fieldPath: "embedding_field",
          vectorConfig: { dimension: 256, flat: {} }
        }
      ]
    }
  ],

  // 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: []
    }
  ]
}

Indexkonfiguration bereitstellen

Stellen Sie die Indexkonfiguration mit dem Befehl firebase deploy bereit. Wenn Sie Indexe nur 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.

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

Wenn Sie über die Firebase Console Änderungen an den Indexen vornehmen, müssen Sie auch die lokale Indexdatei aktualisieren. Weitere Informationen zum Verwalten von Indexen finden Sie in den Cloud Firestore-Leitfäden.

JSON-Format

Indexe

Das Schema für ein Objekt im indexes-Array sieht so aus. Optionale Attribute sind durch das Zeichen ? gekennzeichnet.

Cloud Firestore-Dokumentfelder können nur in einem Modus indexiert werden. Ein Feldobjekt kann daher nur eines der Attribute order, arrayConfig und vectorConfig 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 and vectorConfig properties
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order and vectorConfig properties
    vectorConfig?: object  // Indicates that this is a vector index; excludes order and arrayConfig properties
      dimension: number    // The resulting index will only include vectors of this dimension
      flat: {}             // Indicates the vector index is a flat index

FieldOverrides

Das Schema für ein Objekt im fieldOverrides-Array sieht so aus. Optionale Attribute sind durch das Zeichen ? gekennzeichnet.

Cloud Firestore-Dokumentfelder können nur in einem Modus indexiert werden. Ein Feldobjekt kann daher nicht sowohl die Attribute 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 so 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 belassen Sie die Standardindexierung im Feld 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 den Richtlinien zur Gültigkeitsdauer (TTL) finden Sie in der offiziellen Dokumentation.