Cloud Firestore automatycznie tworzy indeksy do obsługi najpopularniejszych typów zapytań, ale umożliwia definiowanie indeksów niestandardowych i zastąpienia indeksów zgodnie z opisem w przewodnikach Cloud Firestore .
Możesz tworzyć, modyfikować i wdrażać indeksy niestandardowe w konsoli Firebase lub za pomocą interfejsu CLI. W interfejsie CLI edytuj plik konfiguracyjny indeksu z domyślną nazwą pliku firestore.indexes.json
i wdróż za pomocą polecenia firebase deploy
.
Możesz eksportować indeksy za pomocą interfejsu CLI, używając firebase firestore:indexes
.
Plik konfiguracyjny indeksu definiuje jeden obiekt zawierający tablicę indexes
i opcjonalną tablicę fieldOverrides
. Oto przykład:
{
// 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: []
}
]
}
Wdróż konfigurację indeksu
Wdróż konfigurację indeksu za pomocą polecenia firebase deploy
. Jeśli chcesz wdrożyć indeksy tylko dla baz danych skonfigurowanych w projekcie, dodaj flagę --only firestore
. Zobacz opis opcji tego polecenia .
Aby wyświetlić listę wdrożonych indeksów, uruchom komendę firebase firestore:indexes
. Dodaj flagę --database=<databaseID>
, aby wyświetlić indeksy dla bazy danych innej niż domyślna baza danych projektu.
Jeśli edytujesz indeksy za pomocą konsoli Firebase, pamiętaj o zaktualizowaniu także lokalnego pliku indeksów. Więcej informacji na temat zarządzania indeksami znajdziesz w przewodnikach Cloud Firestore .
formacie JSON
Indeksy
Schemat jednego obiektu w tablicy indexes
jest następujący. Opcjonalne właściwości są identyfikowane za pomocą ?
postać.
Należy pamiętać, że pola dokumentów Cloud Firestore można indeksować tylko w jednym trybie, dlatego obiekt pola nie może zawierać jednocześnie właściwości order
i arrayConfig
.
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
Przesłonięcia pola
Schemat dla jednego obiektu w tablicy fieldOverrides
jest następujący. Opcjonalne właściwości są identyfikowane za pomocą ?
postać.
Należy pamiętać, że pola dokumentów Cloud Firestore można indeksować tylko w jednym trybie, dlatego obiekt pola nie może zawierać jednocześnie właściwości order
i arrayConfig
.
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
Polityka TTL
Zasadę TTL można włączyć lub wyłączyć za pomocą tablicy fieldOverrides
w następujący sposób:
// 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: []
}
]
Aby zachować domyślne indeksowanie w polu i włączyć zasadę TTL:
{
"fieldOverrides": [
{
"collectionGroup": "yourCollectionGroup",
"fieldPath": "yourFieldPath",
"ttl": true,
"indexes": [
{ "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
{ "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
{ "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
]
}
]
}
Więcej informacji na temat zasad dotyczących czasu wygaśnięcia (TTL) można znaleźć w oficjalnej dokumentacji .