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.ownerroles/datastore.indexAdminroles/editorroles/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.createdatastore.indexes.deletedatastore.indexes.getdatastore.indexes.listdatastore.indexes.update
Dizin oluşturma
Dizin oluşturmak için aşağıdaki adımları uygulayın:
Firebase konsolu
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Indexes (Dizinler) sekmesinde Create Index'i (Dizin Oluştur) tıklayın.
- Koleksiyon kimliği girin.
- Bir veya daha fazla alan yolu ekleyin ve her biri için bir dizin seçeneği belirleyin.
- Seyrek olmayan veya seyrek alan varlığı seçeneklerinden birini belirleyin.
- 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ö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=descendingBu alanları yapılandırma hakkında daha fazla bilgi için
--field-configbaş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:
ASCENDINGveyaDESCENDINGdeğerlerinden biri - DENSITY:
SPARSE_ANYveyaDENSEdeğerlerinden biri
Metin dizini oluşturma
Metin dizini oluşturmak için aşağıdaki adımları uygulayın:
Google Cloud konsolu
-
Google Cloud Console'da Veritabanları sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Gezinme menüsünde Dizinler'i tıklayın.
- İsteğe bağlı: Dizin için bir ad girin.
- Arama Türü'ne gidin ve Metin'i seçin.
- Koleksiyon kimliği girin.
- Dizine eklenecek bir veya daha fazla alan yapılandırın.
- Dizin için sorgu kapsamını ayarlayın.
- Varsayılan bir dil seçin.
- İ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.
- 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
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
-
Google Cloud Console'da Veritabanları sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Gezinme menüsünde Dizinler'i tıklayın.
- İsteğe bağlı: Dizin için bir ad girin.
- Arama Türü'ne gidin ve Coğrafi (2dsphere) seçeneğini belirleyin.
- Koleksiyon kimliği girin.
- Dizine eklenecek bir veya daha fazla alan yapılandırın.
- Dizin için sorgu kapsamını ayarlayın.
- 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": {}}' \
--asyncAş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
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Dizinler sekmesini tıklayın.
- Dizin listesinde, silmek istediğiniz dizin için Diğer düğmesinden Sil'i seçin.
- Delete Index'i (Dizini Sil) tıklayın.
gcloud CLI
Dizinin adını bulmak için
gcloud firestore indexes composite listkomutunu kullanın.gcloud firestore indexes composite list \ --database='DATABASE_ID'
DATABASE_ID yerine veritabanı kimliğini girin.
-
Dizini silmek için
gcloud firestore indexes composite deletekomutunu 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.