Google Cloud CLI menyediakan cara mudah untuk mengakses Datastore mode REST API dan mengelola indeks gabungan Anda. Namun, Anda dapat langsung mengakses REST API mode Datastore untuk membuat alat Anda sendiri dalam mengelola indeks gabungan. 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 mengetahui informasi selengkapnya tentang cara mendapatkan token akses, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.
Otorisasi
Pengguna, grup, atau akun 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 (dapatkan dan buat daftar), berikan salah satu peran berikut:
roles/viewer
roles/datastore.user
roles/datastore.viewer
Untuk mengetahui informasi selengkapnya tentang cara menetapkan peran ini, lihat 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 konsolGoogle Cloud menggunakan Cloud Shell.
Membuat indeks gabungan
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 atau tidak
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 APIs 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 APIs 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 indeks 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 gabungan
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 APIs 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 APIs 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" } ] }