Catch up on everthing we announced at this year's Firebase Summit. Learn more

Cloud Firestore'da dizinleri yönetin

Cloud Firestore, her sorgu için bir dizin gerektirerek sorgu performansı sağlar. En temel sorguları için gerekli endeksleri olan otomatik olarak oluşturulur senin için. Uygulamanızı kullanıp test ederken, Cloud Firestore, uygulamanızın gerektirdiği ek dizinleri oluşturmanıza yardımcı olan hata mesajları oluşturur. Bu sayfa, nasıl yönetileceği açıklanmaktadır tek alan ve kompozit endeksler.

Bir hata mesajı yoluyla eksik bir dizin oluşturun

Varolan bir dizine eşlenmeyen bir aralık yan tümcesine sahip bir bileşik sorgu denerseniz, bir hata alırsınız. Hata mesajı, Firebase konsolunda eksik dizini oluşturmak için doğrudan bir bağlantı içerir.

Firebase konsola oluşturulan bağlantıyı takip edin, otomatik olarak doldurulur bilgi inceleyin ve Oluştur'u tıklayın.

Firebase konsolunu kullanın

Firebase konsolundan manuel olarak yeni bir dizin oluşturmak için:

firebase konsolundaki firestore indeksleme arayüzünün görüntüsü

  1. Cloud Firestore bölümüne gidin Firebase konsoluna .
  2. Endeksler sekmesine gidin ve Index Ekle tıklayın.
  3. Koleksiyon adını girin ve dizini sıralamak istediğiniz alanları ayarlayın.
  4. Oluştur tıklayın.

Dizinlerin oluşturulması, sorgunun boyutuna bağlı olarak birkaç dakika sürebilir. Bunları oluşturduktan sonra Composite Indexes bölümünden indexlerinizi ve durumlarını görebilirsiniz. Hâlâ inşa halindelerse Firebase konsolunda bir bina durum çubuğu bulunur.

Dizinleri kaldır

Bir dizini silmek için:

  1. Cloud Firestore bölümüne gidin Firebase konsoluna .
  2. Endeksler sekmesini tıklayın.
  3. Silmek ve bağlam menüsünden Sil seçmek istediğiniz endeksi üzerine getirin.
  4. Uyarının Sil tıklayarak silmek istediğiniz onaylayın.

Firebase CLI'yi kullanın

Ayrıca indeksler dağıtabilir Firebase CLI . Başlamak çalıştırmak almak için firebase init firestore proje dizininde. Kurulum sırasında Firebase CLI, doğru biçimde varsayılan dizinlere sahip bir JSON dosyası oluşturur. Düzenleme dosya daha dizinleri ekleyip ile dağıtma firebase deploy komutu. Yalnızca dizin dağıtmak istiyorsanız, eklemek --only firestore:indexes bayrağı. Firebase konsolunu kullanarak dizinlerde düzenlemeler yapıyorsanız, yerel dizinler dosyanızı da güncellediğinizden emin olun. Bakınız JSON dizin tanım, referans .

Dizin oluşturma süresi

Bir dizin oluşturmak için Cloud Firestore, dizini ayarlamalı ve ardından dizini mevcut verilerle doldurmalıdır. Dizin oluşturma süresi, kurulum süresi ve doldurma süresinin toplamıdır:

  • Bir dizin oluşturmak birkaç dakika sürer. Bir dizin için minimum oluşturma süresi, boş bir veritabanı için bile birkaç dakikadır.

  • Doldurma süresi, yeni dizine ne kadar mevcut verinin ait olduğuna bağlıdır. Dizin tanımıyla eşleşen daha fazla alan değeri, dizini doldurmak için daha uzun sürer.

Dizin işlemleri uzun çalıştıran oluşturur.

Bir dizin oluşturma işlemini başlattıktan sonra Cloud Firestore, işleme benzersiz bir ad atar. Operasyon isimleri ile öneki projects/[PROJECT_ID]/databases/(default)/operations/ , örneğin:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

İçin bir operasyon adını belirlerken Ancak, öneki dışarı bırakabilir describe komutu.

Uzun süren tüm işlemleri listeleme

Liste işlemleri uzun süren için kullanmak gcloud FireStore işlemleri liste komutu. Bu komut, devam eden ve yakın zamanda tamamlanan işlemleri listeler. İşlemler tamamlandıktan sonra birkaç gün için listelenir:

gcloud firestore operations list

İşlem durumunu kontrol edin

Uzun süren tüm işlemleri listelemek yerine tek bir işlemin detaylarını listeleyebilirsiniz:

gcloud firestore operations describe operation-name

Tamamlanma süresinin tahmin edilmesi

Senin operasyonun çalışırken, değerini görmek state alanının operasyonun genel durumu.

Uzun süren operasyonun durumuna yönelik talepler de metrikleri döndürür workEstimated ve workCompleted . Bu metrikler, belge sayısı için döndürülür. workEstimated gösteren bir işlem işleyecek belgelerin tahmini sayısı. workCompleted gösterileri doküman sayısı kadar işleme. İşlemi tamamlandıktan sonra, workCompleted değerinden farklı olabilir aslında işlenen belgelerin, toplam sayısını yansıtır workEstimated .

Böl workCompleted tarafından workEstimated kaba bir ilerleme tahmini için. Tahmin, gecikmiş istatistik toplamaya bağlı olduğundan yanlış olabilir.

Örneğin, bir dizin oluşturma işleminin ilerleme durumu şu şekildedir:

{
  "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 yapıldığında, operasyon açıklaması içerecektir "done": true . Değerini Bkz state alanında operasyon sonucu için. Eğer done saha yanıtta ayarlı değil, daha sonra değeri olan false . Varlığına bağlıdır etmeyin done Devam operasyonları için değer.

Dizin oluşturma hataları

Bileşik dizinleri ve tek alanlı dizin muafiyetlerini yönetirken dizin oluşturma hatalarıyla karşılaşabilirsiniz. Cloud Firestore, dizine eklediği verilerle ilgili bir sorunla karşılaşırsa dizin oluşturma işlemi başarısız olabilir. En yaygın olarak, bu araçlar bir isabet endeks sınırı . Örneğin, işlem, belge başına maksimum dizin girişi sayısına ulaşmış olabilir.

Dizin oluşturma başarısız olursa konsolda hata mesajını görürsünüz. Eğer herhangi isabet olmadığını doğruladıktan sonra endeks sınırlarını , İşaret işlemi yeniden deneyin.