Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Kelola indeks di Cloud Firestore

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Cloud Firestore memastikan performa kueri dengan mewajibkan indeks untuk setiap kueri. Indeks yang diperlukan untuk kueri paling dasar dibuat secara otomatis untuk Anda. Saat Anda menggunakan dan menguji aplikasi, Cloud Firestore menghasilkan pesan error yang membantu Anda membuat indeks tambahan yang diperlukan aplikasi Anda. Halaman ini menjelaskan cara mengelola indeks bidang tunggal dan komposit Anda.

Buat indeks yang hilang melalui pesan kesalahan

Jika Anda mencoba kueri gabungan dengan rentang klausa yang tidak dipetakan ke indeks yang sudah ada, Anda akan menerima pesan kesalahan. Pesan kesalahan menyertakan tautan langsung untuk membuat indeks yang hilang di konsol Firebase.

Ikuti tautan yang dihasilkan ke Firebase console, tinjau info yang diisi secara otomatis, dan klik Buat .

Gunakan konsol Firebase

Untuk membuat indeks baru secara manual dari konsol Firebase:

gambar antarmuka pengindeksan firestore di konsol firebase

  1. Buka bagian Cloud Firestore di Firebase console .
  2. Buka tab Indeks dan klik Tambahkan Indeks .
  3. Masukkan nama koleksi dan atur bidang yang ingin Anda urutkan indeksnya.
  4. Klik Buat .

Pembuatan indeks dapat memakan waktu beberapa menit, bergantung pada ukuran kueri. Setelah Anda membuatnya, Anda dapat melihat indeks Anda dan statusnya di bagian Indeks Komposit. Jika masih membangun, Firebase console menyertakan bilah status bangunan.

Hapus indeks

Untuk menghapus indeks:

  1. Buka bagian Cloud Firestore di Firebase console .
  2. Klik tab Indeks .
  3. Arahkan kursor ke indeks yang ingin Anda hapus dan pilih Hapus dari menu konteks.
  4. Konfirmasikan bahwa Anda ingin menghapusnya dengan mengeklik Hapus dari lansiran.

Gunakan Firebase CLI

Anda juga dapat menerapkan indeks dengan Firebase CLI . Untuk memulai, jalankan firebase init firestore di direktori project Anda. Selama penyiapan, Firebase CLI menghasilkan file JSON dengan indeks default dalam format yang benar. Edit file untuk menambahkan lebih banyak indeks dan terapkan dengan perintah firebase deploy . Jika Anda hanya ingin menerapkan indeks, tambahkan flag --only firestore:indexes . Jika Anda mengedit indeks menggunakan Firebase console, pastikan Anda juga memperbarui file indeks lokal. Lihat referensi definisi indeks JSON .

Waktu pembuatan indeks

Untuk mem-build indeks, Cloud Firestore harus menyiapkan indeks, lalu mengisi ulang indeks dengan data yang ada. Waktu pembuatan indeks adalah jumlah waktu penyiapan dan waktu pengisian ulang:

  • Menyiapkan indeks membutuhkan waktu beberapa menit. Waktu pembuatan minimum untuk indeks adalah beberapa menit, bahkan untuk database kosong.

  • Waktu pengisian ulang tergantung pada berapa banyak data yang ada termasuk dalam indeks baru. Semakin banyak nilai bidang yang cocok dengan definisi indeks, semakin lama waktu yang diperlukan untuk mengisi ulang indeks.

Pembuatan indeks adalah operasi yang berjalan lama .

Setelah Anda memulai build indeks, Cloud Firestore menetapkan nama unik untuk operasi tersebut. Nama operasi diawali dengan projects/[PROJECT_ID]/databases/(default)/operations/ , misalnya:

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

Namun, Anda dapat mengabaikan awalan saat menentukan nama operasi untuk perintah describe .

Mencantumkan semua operasi yang berjalan lama

Untuk membuat daftar operasi yang berjalan lama, gunakan perintah daftar operasi gcloud firestore . Perintah ini mencantumkan operasi yang sedang berlangsung dan baru selesai. Operasi terdaftar selama beberapa hari setelah selesai:

gcloud firestore operations list

Periksa status operasi

Alih-alih mencantumkan semua operasi yang berjalan lama, Anda dapat membuat daftar detail dari satu operasi:

gcloud firestore operations describe operation-name

Memperkirakan waktu penyelesaian

Saat operasi Anda berjalan, lihat nilai bidang state untuk keseluruhan status operasi.

Permintaan status operasi yang berjalan lama juga mengembalikan metrik workEstimated dan workCompleted . Metrik ini dikembalikan untuk jumlah dokumen. workEstimated menunjukkan perkiraan jumlah total dokumen yang akan diproses oleh operasi. workCompleted menunjukkan jumlah dokumen yang diproses sejauh ini. Setelah operasi selesai, workCompleted mencerminkan jumlah total dokumen yang benar-benar diproses, yang mungkin berbeda dari nilai workEstimated .

Membagi workCompleted dengan workEstimated untuk perkiraan kemajuan kasar. Estimasi tersebut mungkin tidak akurat karena bergantung pada pengumpulan statistik yang tertunda.

Misalnya, berikut adalah status progres pembangunan indeks:

{
  "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"
        }
       },
    },
    ...

Saat operasi selesai, deskripsi operasi akan berisi "done": true . Lihat nilai bidang state untuk hasil operasi. Jika kolom done tidak diatur dalam respon, maka nilainya adalah false . Jangan bergantung pada keberadaan nilai yang done untuk operasi yang sedang berlangsung.

Kesalahan pembuatan indeks

Anda mungkin mengalami error pembuatan indeks saat mengelola indeks komposit dan pengecualian indeks bidang tunggal. Operasi pengindeksan dapat gagal jika Cloud Firestore mengalami masalah dengan data yang diindeksnya. Biasanya, ini berarti Anda mencapai batas indeks . Misalnya, operasi mungkin telah mencapai jumlah entri indeks maksimum per dokumen.

Jika pembuatan indeks gagal, Anda akan melihat pesan kesalahan di konsol. Setelah Anda memverifikasi bahwa Anda tidak mencapai batas indeks apa pun, coba ulang operasi indeks Anda.