Cloud Firestore automatycznie tworzy indeksy w celu obsługi najczęstszych typów zapytań, ale umożliwia definiowanie indeksów niestandardowych i zastąpień indeksów jako opisane w przewodnikach po usłudze Cloud Firestore.
Możesz tworzyć, modyfikować i wdrażać indeksy niestandardowe w konsoli Firebase.
za pomocą interfejsu wiersza poleceń. W interfejsie wiersza poleceń zmodyfikuj plik konfiguracji indeksu, wpisując
domyślna nazwa pliku firestore.indexes.json
i wdrożysz ją za pomocą polecenia firebase
deploy
.
Indeksy możesz eksportować za pomocą interfejsu wiersza poleceń za pomocą firebase firestore:indexes
.
Plik konfiguracji indeksu definiuje jeden obiekt zawierający
tablica indexes
i opcjonalna tablica fieldOverrides
.
Oto przykład:
{
// 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: []
}
]
}
Wdrażanie konfiguracji indeksu
Wdróż konfigurację indeksu za pomocą polecenia firebase deploy
. Jeśli tylko
Jeśli chcesz wdrożyć indeksy dla baz danych skonfigurowanych w projekcie, dodaj
flagę --only firestore
. Zobacz informacje o opcjach tego polecenia.
Aby wyświetlić listę wdrożonych indeksów, uruchom polecenie firebase firestore:indexes
. Dodaj parametr
Flaga --database=<databaseID>
do wyświetlania listy indeksów bazy danych innej niż
domyślnej bazy danych projektu.
Jeśli wprowadzasz zmiany w indeksach za pomocą konsoli Firebase, upewnij się też, zaktualizuj swój plik indeksów lokalnych. Więcej informacji o zarządzaniu indeksami znajdziesz w materiałach na temat Cloud Firestore przewodników.
Format JSON
Indeksy
Schemat 1 obiektu w tablicy indexes
jest następujący. Opcjonalna
właściwości są oznaczone znakiem ?
.
Pamiętaj, że pola dokumentu (Cloud Firestore) można zindeksować tylko w jednym trybie.
więc obiekt pola może zawierać tylko jeden z tych elementów: order
, arrayConfig
i
vectorConfig
usług.
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
Zastąpienia pól
Schemat 1 obiektu w tablicy fieldOverrides
jest następujący. Opcjonalna
właściwości są oznaczone znakiem ?
.
Pamiętaj, że pola dokumentu (Cloud Firestore) można zindeksować tylko w jednym trybie.
więc obiekt pola nie może zawierać jednocześnie order
i arrayConfig
usług.
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
Zasada TTL
Zasada 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 o zasadach dotyczących czasu życia danych (TTL) znajdziesz w oficjalnej dokumentacji.