Google Cloud CLI menyediakan cara praktis untuk mengakses REST API mode Datastore dan mengelola indeks gabungan Anda. Namun, Anda dapat langsung mengakses REST API mode Datastore untuk membuat alat Anda sendiri guna mengelola indeks komposit. Misalnya, Anda dapat membuat alat untuk mengotomatiskan penyediaan dan pengelolaan indeks.
Autentikasi dan otorisasi
Untuk mengakses metode REST API Firestore dalam mode Datastore di bawah, Anda harus mengautentikasi permintaan dengan memberikan token akses Google OAuth 2.0 dengan salah satu cakupan berikut:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Contoh cURL dan PowerShell di bawah menggunakan perintah gcloud auth print-access-token
untuk mengautentikasi permintaan. Untuk informasi
selengkapnya tentang cara mendapatkan token akses, lihat
Menggunakan OAuth 2.0 untuk Mengakses Google API.
Otorisasi
Akun pengguna, grup, atau layanan terautentikasi dalam permintaan harus memiliki otorisasi untuk mengakses metode API. Untuk memberikan otorisasi akses ke metode pengindeksan, tetapkan salah satu peran Identity and Access Management (IAM) berikut:
Untuk akses baca dan edit indeks penuh, berikan salah satu peran berikut:
roles/owner
roles/editor
roles/datastore.owner
roles/datastore.indexAdmin
Untuk akses baca indeks saja (mendapatkan dan membuat daftar), berikan salah satu peran berikut:
roles/viewer
roles/datastore.user
roles/datastore.viewer
Untuk mengetahui informasi selengkapnya tentang cara menetapkan peran ini, lihat artikel tentang cara memberikan, mengubah, dan mencabut akses ke resource.
Sebelum memulai
Contoh curl
dan PowerShell di bawah menggunakan Google Cloud CLI (Google Cloud CLI) untuk mengautentikasi permintaan. Untuk menjalankan contoh ini secara lokal,
instal dan lakukan inisialisasi Google Cloud CLI.
Atau, Anda dapat mengakses gcloud
dan curl
dari
konsol Google Cloud menggunakan Cloud Shell.
Membuat indeks komposit
Untuk membuat indeks komposit baru, gunakan metode projects.indexes.create.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
- kind: jenis entity yang akan diindeks
- include-ancestors: apakah akan menyertakan ancestor entity dalam indeks
untuk mendukung kueri ancestor,
NONE
atauALL_ANCESTORS
- property-name: properti yang akan diindeks, harus menentukan dua properti atau lebih
- index-direction: urutan pengurutan untuk setiap properti,
ASCENDING
atauDESCENDING
Metode HTTP dan URL:
POST https://datastore.googleapis.com/v1/projects/project-id/indexes
Isi JSON permintaan:
{ "kind": "kind", "ancestor": "include-ancestors", "properties": [ { "name": "property-name", "direction": "index-direction" }, { "name": "property-name", "direction": "index-direction" } ] }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
Salin isi permintaan dan buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/project-id/operations/S01vcFVpSmdBQ0lDDCoDIDgxZGVhZDM0ZDc4MS1jMjJhLWQ1ZTQtYmMyNS1iYjY2NWVlZCQadGx1YWZlZAcSMXJoLXJleGVkbmktbmltZGERClIS", "metadata": { "@type": "type.googleapis.com/google.datastore.admin.v1.IndexOperationMetadata", "common": { "startTime": "2019-12-05T22:27:19.238Z", "operationType": "CREATE_INDEX", "state": "INITIALIZING" }, "indexId": "CICAgJiUpoMK" } }
Mendapatkan status indeks
Mode Datastore memberikan ID indeks unik untuk setiap indeks. Anda dapat menggunakan ID indeks ini untuk mendapatkan status satu indeks dengan metode projects.indexes.get:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
- index-id: ID indeks komposit
Metode HTTP dan URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "projectId": "project-id", "indexId": "index-id", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "done", "direction": "ASCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "READY" }
Status indeks
Lihat status indeks untuk mengetahui informasi progres dan
pesan error. Anda tidak dapat menggunakan indeks untuk kueri hingga mencapai
status READY
. Kemungkinan status indeks meliputi:
CREATING
: pembuatan indeks sedang berlangsung.ALREADY_EXISTS
: tidak dapat menyelesaikan operasi karena indeks ini sudah ada.ERROR
: pembuatan indeks gagal. Perbaiki data yang menyebabkan error, hapus indeks ini, lalu buat indeks lagi.READY
: pembuatan indeks selesai. Indeks siap digunakan untuk kueri.
Menghapus indeks komposit
Metode HTTP dan URL:
DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan menerima kode status yang menandakan proses berhasil (2xx), dan sebuah respons kosong.
Mencantumkan semua indeks komposit
Untuk mencantumkan semua indeks komposit untuk database mode Datastore, gunakan metode projects.indexes.list.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
Metode HTTP dan URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "indexes": [ { "projectId": "project-id", "indexId": "CICAgOjXh4EK", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "done", "direction": "ASCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "READY" }, { "projectId": "project-id", "indexId": "CICAgNiroIEK", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "due-date", "direction": "DESCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "CREATING" } ] }