Referensi Definisi Indeks Cloud Firestore

Cloud Firestore otomatis membuat indeks untuk mendukung metode kueri yang sama, tetapi juga memungkinkan Anda untuk menentukan indeks kustom dan penggantian indeks dijelaskan dalam panduan Cloud Firestore.

Anda dapat membuat, memodifikasi, 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 mendefinisikan satu objek yang berisi sebuah 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, flag --only firestore. Lihat referensi opsi untuk perintah ini.

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

Jika Anda mengedit indeks menggunakan Firebase console, pastikan juga memperbarui file indeks lokal Anda. Untuk informasi selengkapnya tentang mengelola indeks, lihat Panduan Cloud Firestore.

Format JSON

Indeks

Skema untuk satu objek dalam array indexes adalah sebagai berikut. Opsional properti diidentifikasi dengan karakter ?.

Perhatikan bahwa kolom dokumen Cloud Firestore hanya dapat diindeks dalam satu mode, sehingga objek kolom hanya dapat berisi salah satu dari order, arrayConfig, dan Properti 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

Penggantian Kolom

Skema untuk satu objek dalam array fieldOverrides adalah sebagai berikut. Opsional properti diidentifikasi dengan karakter ?.

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

  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 menggunakan pengindeksan default dalam 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 informasi lebih lanjut tentang kebijakan time to live (TTL), tinjau dokumentasi resmi.