Cloud Firestore, her bir cihaz için dizin gerektirerek sorgu performansı sağlar. emin olun. En temel sorgular için gereken dizinler otomatik olarak sizin için oluşturulmuşlardır. Cloud, uygulamanızı kullanırken ve test ederken Firestore, pek çok bilgi sağlayabilir. Bu sayfada, tek alanlı ve birleşik dizinler.
Hata mesajıyla eksik dizin oluşturma
Bir mevcut bir dizinle eşleşmeyen aralık ifadesi içeren bileşik sorgu bir hata alırsınız. Hata mesajı, Firebase konsolunda eksik dizin.
Oluşturulan bağlantıyı izleyerek Firebase konsoluna gidin, otomatik olarak doldurduktan sonra Oluştur'u tıklayın.
Roller ve izinler
Cloud Firestore'da dizin oluşturmadan önce size aşağıdaki rollerden birinin atandığından emin olun:
roles/datastore.owner
roles/datastore.indexAdmin
roles/editor
roles/owner
Özel roller tanımladıysanız dizin oluşturmak için aşağıdaki izinlerin tümünü atayın:
datastore.indexes.create
datastore.indexes.delete
datastore.indexes.get
datastore.indexes.list
datastore.indexes.update
Firebase konsolunu kullanma
Firebase konsolundan manuel olarak yeni bir dizin oluşturmak için:
- Firebase konsolunun Cloud Firestore bölümüne gidin.
- Dizinler sekmesine gidin ve Dizin Ekle'yi tıklayın.
- Koleksiyon adını girin ve dizini sıralamak istediğiniz alanları belirleyin.
- Oluştur'u tıklayın.
Dizin alanları, alan yollarıyla ilgili kısıtlamalara uygun olmalıdır.
Dizinlerin oluşturulması sorgunun boyutuna bağlı olarak birkaç dakika sürebilir. Bunları oluşturduktan sonra dizinlerinizi ve durumlarını Birleşik Dizinler bölümü. Geliştirme süreçleri devam ediyorsa Firebase konsolunda bina durum çubuğuna
Dizinleri kaldır
Bir dizini silmek için:
- Firebase konsolunun Cloud Firestore bölümüne gidin.
- Dizinler sekmesini tıklayın.
- Fare imlecini, silmek istediğiniz dizinin üzerine getirin ve içerik menüsünden Sil'i seçin.
- Uyarıda Sil'i tıklayarak uyarıyı silmek istediğinizi onaylayın.
Firebase CLI'ı kullanma
Dizinleri Firebase CLI ile de dağıtabilirsiniz.
Başlamak için proje dizininizde firebase init firestore
komutunu çalıştırın.
Firebase CLI, kurulum sırasında varsayılan değer ile bir JSON dosyası oluşturur.
doğru biçimde olmasını sağlayın. Daha fazla dizin eklemek ve dağıtmak için dosyayı düzenleyin.
firebase deploy
komutuyla ekleyebilirsiniz.
Yalnızca Cloud Firestore dizinlerini ve kurallarını dağıtmak için
--only firestore
işareti.
Firebase konsolunu kullanarak dizinlerde düzenleme yaparsanız yerel dizin dosyanızı da güncellediğinizden emin olun. Referans JSON dizin tanımı referansı.
Terraform kullan
Veritabanında dizin oluşturma
Cloud Firestore veritabanı, tek alanlı bir dizin veya birleşik dizin içerebilir. Veritabanınız için dizin oluşturmak üzere Terraform yapılandırma dosyasını düzenleyebilirsiniz.
Tek alanlı dizin
Aşağıdaki örnek Terraform yapılandırma dosyası, chatrooms
koleksiyonundaki name
alanında tek alanlı bir dizin oluşturur:
firestore.tf
resource "random_id" "variable"{ byte_length = 8 } resource "google_firestore_field" "single-index" { project = "project-id" database = "database-id" collection = "chatrooms_${random_id.variable.hex}" field = "name" index_config { indexes { order = "ASCENDING" query_scope = "COLLECTION_GROUP" } indexes { array_config = "CONTAINS" } } ttl_config {} }
- project-id yerine proje kimliğinizi yazın. Proje kimlikleri benzersiz olmalıdır.
- database-id değerini veritabanı kimliğinizle değiştirin.
Bileşik dizin
Aşağıdaki örnek Terraform yapılandırma dosyası, chatrooms
koleksiyonundaki name
alanı ile description
alanının bir kombinasyonu için bileşik dizin oluşturur:
firestore.tf
resource "google_firestore_index" "composite-index" { project = "project-id" database = "database-id" collection = "chatrooms" fields { field_path = "name" order = "ASCENDING" } fields { field_path = "description" order = "DESCENDING" } }
- project-id yerine proje kimliğinizi yazın. Proje kimlikleri benzersiz olmalıdır.
- database-id değerini veritabanı kimliğinizle değiştirin.
Dizin oluşturma süresi
Dizin oluşturmak için Cloud Firestore'un dizini ayarlaması ve ardından dizini mevcut verilerle doldurun. Dizin oluşturma süresi, kurulum süresinin toplamıdır ve doldurma süresi:
Dizin oluşturmak birkaç dakika sürer. Minimum derleme süresi boş bir veritabanında bile birkaç dakikadır.
Doldurma süresi, mevcut verilerin ne kadarının yeni dizine ait olduğuna bağlıdır. İlgili içeriği oluşturmak için kullanılan dizin tanımıyla eşleşen daha fazla alan değeri bulursanız dizini yeniden doldurun.
Dizin derlemeleri uzun süreli işlemlerdir.
Bir dizin derlemesi başlattığınızda, Cloud Firestore
işleme benzersiz bir ad verin. İşlem adlarının başında projects/[PROJECT_ID]/databases/(default)/operations/
öneki bulunur,
örneğin:
projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Ancak aşağıdakiler için bir işlem adı belirtirken öneki çıkarabilirsiniz
describe
komutunu kullanın.
Tüm uzun süreli işlemleri listeleme
Uzun süreli işlemleri listelemek için gcloud firestore işlemleri listesi komutunu kullanın. Bu komut, devam eden ve yakın zamanda tamamlanan işlemleri listeler. İşlemler, tamamlandıktan sonra birkaç gün boyunca listelenir:
gcloud firestore operations list
İşlem durumunu kontrol et
Tüm uzun süreli işlemleri listelemek yerine, görevlerin tek bir işlemle:
gcloud firestore operations describe operation-name
Tamamlanma süresini tahmin etme
İşleminiz çalışırken state
alanının değerine bakın.
zaman çizelgesini takip edin.
Uzun süreli bir işlemin durumuyla ilgili istek de metrikleri döndürür.
workEstimated
ve workCompleted
. Bu metrikler şu sayı için döndürülür:
sağlayabilir. workEstimated
, tahmini toplam doküman sayısını gösterir.
işlenecek. workCompleted
.
şu ana kadar işlenen doküman sayısını gösterir. İşlem tamamlandıktan sonra
workCompleted
, gönderilen dokümanların toplam sayısını gösterir
workEstimated
değerinden farklı olabilir.
İlerleme tahmini için workCompleted
değerini workEstimated
değerine bölün. İlgili içeriği oluşturmak için kullanılan
tahmini gecikmeli istatistiklere bağlı olduğundan yanlış olabilir
koleksiyonudur.
Örneğin, bir dizin derlemesinin ilerleme durumu aşağıdaki gibidir:
{ "operations": [ { "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI", "metadata": { "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata", "common": { "operationType": "CREATE_INDEX", "startTime": "2020-06-23T16:52:25.697539Z", "state": "PROCESSING" }, "progressDocuments": { "workCompleted": "219327", "workEstimated": "2198182" } }, }, ...
Bir işlem tamamlandığında işlem açıklamasında "done":
true
yer alır. Şu değer için state
alanındaki değere bakın:
anlamına gelir. Yanıtta done
alanı ayarlanmamışsa
değeri false
olur. done
değerinin varlığına bağlı olmama
dört temel adımı ele alacağız.
Dizin oluşturma hataları
Bileşik dizinleri ve dizinleri yönetirken dizin oluşturma hatalarıyla karşılaşabilirsiniz tek alanlı dizin muafiyetleri. Dizine ekleme işlemi aşağıdaki durumlarda başarısız olabilir: Cloud Firestore, dizine eklediği verilerle ilgili bir sorunla karşılaştı. En sık genelde bu, çok kısa bir süre içinde dizin sınırı. Örneğin, Örneğin, işlem maksimum dizin girişi sayısına ulaşmış olabilir not alın.
Dizin oluşturma işlemi başarısız olursa konsolda hata mesajı gösterilir. Şu tarihten sonra: herhangi bir hedefe ulaşmadığınızı dizin sınırlarından sonra dizine ekleme işleminizi yeniden deneyin.