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.