Dizinleri yönetme

Bu sayfada, Firestore Enterprise sürümü için dizinlerinizi nasıl yöneteceğiniz açıklanmaktadır.

Firestore Enterprise sürümü dizinleri hakkında daha fazla bilgi edinmek için Dizinlere genel bakış başlıklı makaleyi inceleyin.

Başlamadan önce

Cloud Firestore içinde dizin oluşturabilmek için aşağıdaki rollerden birine atanmış olmanız gerekir:

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

Rol vermek için Tek bir rol verme başlıklı makaleyi inceleyin. Cloud Firestore rolleri ve ilişkili izinler hakkında daha fazla bilgi için Önceden tanımlanmış roller başlıklı makaleyi inceleyin.

Ö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

Dizin oluşturma

Dizin oluşturmak için aşağıdaki adımları uygulayın:

Firebase konsolu
  1. Firebase konsolunda Firestore Database sayfasına gidin.

    Firestore Veritabanı'na git

  2. Veritabanları listesinden bir veritabanı seçin.
  3. Indexes (Dizinler) sekmesinde Create Index'i (Dizin Oluştur) tıklayın.
  4. Koleksiyon kimliği girin.
  5. Bir veya daha fazla alan yolu ekleyin ve her biri için bir dizin seçeneği belirleyin.
  6. Seyrek olmayan veya seyrek alan varlığı seçeneklerinden birini belirleyin.
  7. Oluştur'u tıklayın.
  8. Yeni dizininiz, dizinler listesinde gösterilir ve Cloud Firestore dizininizi oluşturmaya başlar. Dizininiz oluşturulduğunda dizinin yanında yeşil bir onay işareti görürsünüz. Dizin oluşturulmazsa olası nedenler için Dizin oluşturma hataları bölümüne bakın.
gcloud CLI

Dizin oluşturmak için gcloud firestore indexes composite create komutunu kullanın.

gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION \
--field-config=FIELD_CONFIGURATION \
--query-scope=collection-group \
--density=dense

Aşağıdakini değiştirin:

  • DATABASE_ID: Veritabanı kimliği.
  • COLLECTION: Koleksiyon adı.
  • FIELD_CONFIGURATION: alan yapılandırması. Her alan için --field-config=field-path= ekleyin. Örneğin:
        --field-config=field-path=user-id,order=descending \
        --field-config=field-path=score,order=descending
        

    Bu alanları yapılandırma hakkında daha fazla bilgi için --field-config başlıklı makaleyi inceleyin.

Seyrek dizin oluşturmak için --density=sparse-any değerini ayarlayın.

Benzersiz bir dizin oluşturmak için --unique işaretini ekleyin.

Terraform

google_firestore_index kaynağını kullanın.

resource "google_firestore_index" "index" {
  database    = "DATABASE_ID"
  collection  = "COLLECTION"
  query_scope = "COLLECTION_GROUP"

  // You can include multiple field blocks
  fields {
    field_path = "FIELD_PATH"
    order      = "ORDER"
  }

  // Optional
  multikey = true
  density  = "DENSITY"
}

Aşağıdakini değiştirin:

  • DATABASE_ID: Seçtiğiniz veritabanının veritabanı kimliği
  • COLLECTION: Dizine eklenecek koleksiyonun adı
  • FIELD_PATH: Dizine eklenecek alanın adı
  • ORDER: ASCENDING veya DESCENDING değerlerinden biri
  • DENSITY: SPARSE_ANY veya DENSE değerlerinden biri

Metin dizini oluşturma

Metin dizini oluşturmak için aşağıdaki adımları uygulayın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden bir veritabanı seçin.
  3. Gezinme menüsünde Dizinler'i tıklayın.
  4. İsteğe bağlı: Dizin için bir ad girin.
  5. Arama Türü'ne gidin ve Metin'i seçin.
  6. Koleksiyon kimliği girin.
  7. Dizine eklenecek bir veya daha fazla alan yapılandırın.
  8. Dizin için sorgu kapsamını ayarlayın.
  9. Varsayılan bir dil seçin.
  10. İsteğe bağlı: Bir dokümanın dil ayarını içeren alan adı için dil geçersiz kılma yolu ayarlayın.
  11. Oluştur'u tıklayın.
  12. Yeni dizininiz, dizinler listesinde gösterilir ve Cloud Firestore dizininizi oluşturmaya başlar. Dizininiz oluşturulduğunda dizinin yanında yeşil bir onay işareti gösterilir.
gcloud CLI

Metin dizini oluşturmak için gcloud firestore indexes composite create komutunu kullanın:

gcloud firestore indexes composite create \
  --database='DATABASE_ID' \
  --collection-group=COLLECTION_GROUP \
  --field-config=field-path=FIELD_NAME,search-config='{"text-spec": {"index-specs": [{"index-type": "tokenized", "match-type": "match-globally"}]}}' \
  --search-index-options=text-language=en \
  --async

Aşağıdakini değiştirin:

  • DATABASE_ID: Veritabanı kimliği.
  • COLLECTION_GROUP: Dizine eklenecek koleksiyonun kimliği.
  • FIELD_NAME: Dizine eklenecek alanın adı.

--async işareti, dizin oluşturma işlemini arka planda çalıştırır.

Coğrafi dizin oluşturma

Coğrafi dizin oluşturmak için aşağıdaki adımları uygulayın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden bir veritabanı seçin.
  3. Gezinme menüsünde Dizinler'i tıklayın.
  4. İsteğe bağlı: Dizin için bir ad girin.
  5. Arama Türü'ne gidin ve Coğrafi (2dsphere) seçeneğini belirleyin.
  6. Koleksiyon kimliği girin.
  7. Dizine eklenecek bir veya daha fazla alan yapılandırın.
  8. Dizin için sorgu kapsamını ayarlayın.
  9. Oluştur'u tıklayın.

Yeni dizininiz, dizinler listesinde gösterilir ve Cloud Firestore dizininizi oluşturmaya başlar. Dizininiz oluşturulduğunda dizinin yanında yeşil bir onay işareti gösterilir.

gcloud CLI

Coğrafi dizin oluşturmak için gcloud firestore indexes composite create komutunu kullanın:

gcloud firestore indexes composite create \
  --database='DATABASE_ID' \
  --collection-group=COLLECTION_GROUP \
  --field-config=field-path=FIELD_NAME,search-config='{"geo-spec": {}}' \
  --async

Aşağıdakini değiştirin:

  • DATABASE_ID: Veritabanı kimliği.
  • COLLECTION_GROUP: Dizine eklenecek koleksiyonun kimliği.
  • FIELD_NAME: Dizine eklenecek alanın adı.

--async işareti, dizin oluşturma işlemini arka planda çalıştırır.

Dizini silme

Bir dizini silmek için aşağıdaki adımları uygulayın:

Firebase konsolu
  1. Firebase konsolunda Firestore Database sayfasına gidin.

    Firestore Veritabanı'na git

  2. Veritabanları listesinden bir veritabanı seçin.
  3. Dizinler sekmesini tıklayın.
  4. Dizin listesinde, silmek istediğiniz dizin için Diğer düğmesinden Sil'i seçin.
  5. Delete Index'i (Dizini Sil) tıklayın.
gcloud CLI
  1. Dizinin adını bulmak için gcloud firestore indexes composite list komutunu kullanın.

    gcloud firestore indexes composite list \
    --database='DATABASE_ID'

    DATABASE_ID yerine veritabanı kimliğini girin.

  2. Dizini silmek için gcloud firestore indexes composite delete komutunu kullanın.

    gcloud firestore indexes composite delete INDEX_NAME \
    --database='DATABASE_ID'

    Aşağıdakini değiştirin:

    • INDEX_NAME: bir dizinin adı
    • DATABASE_ID: veritabanı kimliği

Dizin oluşturma süresi

Dizin oluşturmak için Cloud Firestore, dizini oluşturmalı ve ardından dizin girişlerini mevcut verilerle doldurmalıdır. Dizin oluşturmak için gereken süre, aşağıdakilere göre belirlenir:

  • Boş bir veritabanı için bile dizin oluşturma süresi en az birkaç dakikadır.

  • Dizin girişlerini doldurmak için gereken süre, yeni dizine ait mevcut veri miktarına bağlıdır. Dizin tanımıyla eşleşen alan değeri sayısı ne kadar fazlaysa dizin girişlerinin doldurulması o kadar uzun sürer.

Uzun süreli işlemleri yönetme

Dizin derlemeleri uzun süreli işlemlerdir. Aşağıdaki bölümlerde, dizinler için uzun süreli işlemlerle nasıl çalışılacağı açıklanmaktadır.

Dizin oluşturmaya başladıktan sonra Cloud Firestore, işleme benzersiz bir ad atar. İşlem adlarının önüne projects/PROJECT_ID/databases/DATABASE_ID/operations/ eklenir. Örneğin:

projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

describe komutu için işlem adı belirtirken ön eki atlayabilirsiniz.

Tüm uzun süreli işlemleri listeleme

Uzun süreli işlemleri listelemek için gcloud firestore operations list 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

Faaliyet durumunu kontrol etme

Tüm uzun süreli işlemleri listelemek yerine tek bir işlemin ayrıntılarını listeleyebilirsiniz:

gcloud firestore operations describe operation-name

Tamamlanma süresi tahmin ediliyor

İşleminiz çalışırken işlemin genel durumu için state alanının değerine bakın.

Uzun süreli bir işlemin durumuna yönelik istek, workEstimated ve workCompleted metriklerini de döndürür. workEstimated, bir işlemin işleyeceği tahmini toplam belge sayısını gösterir. workCompleted Şu ana kadar işlenen doküman sayısını gösterir. İşlem tamamlandıktan sonra workCompleted, gerçekte işlenen toplam belge sayısını yansıtır. Bu sayı, workEstimated değerinden farklı olabilir.

Bir işlemin ilerleme durumunu tahmin etmek için workCompleted değerini workEstimated değerine bölün.

Aşağıda, dizin oluşturma sürecine dair bir örnek verilmiştir:

{
  "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ı "done": true değerini içerir. İşlemin sonucu için state alanının değerine bakın. Yanıtta done alanı ayarlanmamışsa işlem tamamlanmamıştır.