Cloud Firestore, en yaygın sorgu türlerini desteklemek için dizinleri otomatik olarak oluşturur ancak Cloud Firestore kılavuzlarında açıklandığı gibi özel dizinler ve dizin geçersiz kılmaları tanımlamanızı sağlar.
Firebase konsolunda veya KSA'yı kullanarak özel dizinler oluşturabilir, değiştirebilir ve dağıtabilirsiniz. CLI'da, dizin yapılandırma dosyanızı varsayılan dosya adı firestore.indexes.json
ile düzenleyin ve firebase
deploy
komutunu kullanarak dağıtın.
Dizinleri CLI ile firebase firestore:indexes
kullanarak dışa aktarabilirsiniz.
Bir dizin yapılandırma dosyası, indexes
dizisi ve isteğe bağlı fieldOverrides
dizisi içeren bir nesneyi tanımlar.
Aşağıda bir örnek verilmiştir:
{
// 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: []
}
]
}
Dizin yapılandırması dağıtma
firebase deploy
komutuyla dizin yapılandırmanızı dağıtın. Dizinleri yalnızca projenizde yapılandırılan veritabanları için dağıtmak istiyorsanız --only firestore
işaretini ekleyin. Bu komut için seçenekler referansına bakın.
Dağıtılan dizinleri listelemek için firebase firestore:indexes
komutunu çalıştırın. Projenizin varsayılan veritabanından farklı bir veritabanının dizinlerini listelemek için --database=<databaseID>
işaretini ekleyin.
Dizinlerde Firebase konsolunu kullanarak düzenleme yaparsanız yerel dizin dosyanızı da güncellediğinizden emin olun. Dizinleri yönetme hakkında daha fazla bilgi için Cloud Firestore kılavuzlarına bakın.
JSON biçimi
Dizinler
indexes
dizisindeki bir nesnenin şeması aşağıdaki gibidir. İsteğe bağlı mülkler ?
karakteriyle tanımlanır.
Cloud Firestore belge alanları yalnızca tek bir modda dizine eklenebilir. Bu nedenle bir alan nesnesinin order
, arrayConfig
ve vectorConfig
özelliklerinden yalnızca birini içerebileceğini unutmayın.
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
fieldOverrides
dizisindeki bir nesnenin şeması aşağıdaki gibidir. İsteğe bağlı mülkler ?
karakteriyle tanımlanır.
Cloud Firestore belge alanlarının yalnızca tek bir modda dizine eklenebildiğini unutmayın. Bu nedenle, bir alan nesnesi hem order
hem de arrayConfig
özelliklerini içeremez.
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 Politikası
TTL politikası, fieldOverrides
dizisi kullanılarak aşağıdaki şekilde etkinleştirilebilir veya devre dışı bırakılabilir:
// 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: []
}
]
Varsayılan dizine eklemeyi alanda tutmak ve bir TTL politikası etkinleştirmek için:
{
"fieldOverrides": [
{
"collectionGroup": "yourCollectionGroup",
"fieldPath": "yourFieldPath",
"ttl": true,
"indexes": [
{ "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
{ "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
{ "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
]
}
]
}
Geçerlilik süresi (TTL) politikaları hakkında daha fazla bilgi edinmek için resmi belgeleri inceleyin.