Referensi Definisi Indeks Cloud Firestore

Cloud Firestore secara otomatis membuat indeks untuk mendukung jenis kueri yang paling umum, tetapi memungkinkan Anda menentukan indeks kustom dan penggantian indeks seperti yang dijelaskan dalam panduan Cloud Firestore.

Anda dapat membuat, mengubah, dan men-deploy indeks kustom di Firebase console, atau menggunakan CLI. Dari CLI, edit file konfigurasi indeks Anda, dengan nama file default firestore.indexes.json, dan deploy menggunakan perintah firebase deploy.

Anda dapat mengekspor indeks dengan CLI menggunakan firebase firestore:indexes.

File konfigurasi indeks menentukan satu objek yang berisi array indexes dan array fieldOverrides opsional. Berikut contohnya:

{
  // 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: []
    }
  ]
}

Men-deploy konfigurasi indeks

Deploy konfigurasi indeks Anda dengan perintah firebase deploy. Jika Anda hanya ingin men-deploy indeks untuk database yang dikonfigurasi di project Anda, tambahkan flag --only firestore. Lihat referensi opsi untuk perintah ini.

Untuk mencantumkan indeks yang di-deploy, jalankan perintah firebase firestore:indexes. Tambahkan flag --database=<databaseID> guna mencantumkan indeks untuk database selain database default project Anda.

Jika Anda mengedit indeks menggunakan Firebase console, pastikan Anda juga mengupdate file indeks lokal. Untuk mengetahui informasi lebih lanjut tentang cara mengelola indeks, baca panduan Cloud Firestore.

Format JSON

Indeks

Skema untuk satu objek dalam array indexes adalah sebagai berikut. Properti opsional diidentifikasi dengan karakter ?.

Perlu diperhatikan bahwa kolom dokumen Cloud Firestore hanya dapat diindeks dalam satu mode, sehingga objek kolom hanya dapat berisi salah satu dari properti order, arrayConfig, dan vectorConfig.

  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

Skema untuk satu objek dalam array fieldOverrides adalah sebagai berikut. Properti opsional diidentifikasi dengan karakter ?.

Perlu diperhatikan bahwa kolom dokumen Cloud Firestore hanya dapat diindeks dalam satu mode, sehingga objek kolom tidak dapat berisi properti order dan arrayConfig.

  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

Kebijakan TTL

Kebijakan TTL dapat diaktifkan atau dinonaktifkan menggunakan array fieldOverrides sebagai berikut:

  // 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: []
    }
  ]

Untuk tetap menggunakan pengindeksan default di kolom dan mengaktifkan kebijakan TTL:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

Untuk mengetahui informasi selengkapnya tentang kebijakan time to live (TTL), baca dokumentasi resmi.