Configurazione degli indici con l'API REST

Questa pagina descrive come creare, eliminare ed elencare gli indici compositi in modalità Datastore utilizzando l'API REST Datastore.

Google Cloud CLI offre un modo pratico per accedere all'API REST in modalità Datastore e gestire gli indici compositi. Tuttavia, puoi accedere direttamente all'API REST in modalità Datastore per creare i tuoi strumenti per gestire gli indici compositi. Ad esempio, puoi creare strumenti per automatizzare il provisioning e la gestione degli indici.

Autenticazione e autorizzazione

Per accedere ai metodi dell'API REST Firestore in modalità Datastore riportati di seguito, devi autenticare la richiesta fornendo un token di accesso Google OAuth 2.0 con uno dei seguenti ambiti:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

Gli esempi di cURL e PowerShell riportati di seguito utilizzano il comando gcloud auth print-access-token per autenticare le richieste. Per ulteriori informazioni su come ottenere un token di accesso, consulta Utilizzare OAuth 2.0 per accedere alle API di Google.

Autorizzazione

L'utente, il gruppo o il account di servizio autenticato nella richiesta deve disporre dell'autorizzazione per accedere ai metodi API. Per autorizzare l'accesso ai metodi di indicizzazione, assegna uno dei seguenti ruoli IAM (Identity and Access Management):

  • Per l'accesso completo in lettura e modifica all'indice, concedi uno di questi ruoli:

    • roles/owner
    • roles/editor
    • roles/datastore.owner
    • roles/datastore.indexAdmin
  • Per l'accesso in lettura solo all'indice (get e list), concedi uno di questi ruoli:

    • roles/viewer
    • roles/datastore.user
    • roles/datastore.viewer

Per saperne di più sull'assegnazione di questi ruoli, consulta Concessione, modifica e revoca dell'accesso alle risorse.

Prima di iniziare

Gli esempi di curl e PowerShell riportati di seguito utilizzano Google Cloud CLI (Google Cloud CLI) per autenticare le richieste. Per eseguire questi esempi in locale, installa e inizializza Google Cloud CLI.

In alternativa, puoi accedere a gcloud e curl dalla consoleGoogle Cloud utilizzando Cloud Shell.

Avvia Cloud Shell

Creazione di un indice composito

Per creare un nuovo indice composito, utilizza il metodo projects.indexes.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto
  • kind: il tipo di entità da indicizzare
  • include-ancestors: indica se includere o meno i predecessori dell'entità nell'indice per supportare le query da predecessore, NONE o ALL_ANCESTORS
  • property-name: la proprietà da indicizzare, devono essere specificate due o più proprietà
  • index-direction: l'ordine di ordinamento per ogni proprietà, ASCENDING o DESCENDING

Metodo HTTP e URL:

POST https://datastore.googleapis.com/v1/projects/project-id/indexes

Corpo JSON della richiesta:

{
  "kind": "kind",
  "ancestor": "include-ancestors",
  "properties": [
      {
          "name": "property-name",
          "direction": "index-direction"
      },
      {
          "name": "property-name",
          "direction": "index-direction"
      }
  ]
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Explorer API

Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila gli altri campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

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

Recupero dello stato dell'indice in corso…

La modalità Datastore assegna a ogni indice un ID univoco. Puoi utilizzare questo ID indice per ottenere lo stato di un singolo indice con il metodo projects.indexes.get:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto
  • index-id: un ID indice composito

Metodo HTTP e URL:

GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"

PowerShell

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "projectId": "project-id",
  "indexId": "index-id",
  "kind": "Task",
  "ancestor": "NONE",
  "properties": [
    {
      "name": "done",
      "direction": "ASCENDING"
    },
    {
      "name": "priority",
      "direction": "ASCENDING"
    }
  ],
  "state": "READY"
}

Stato dell'indice

Visualizza lo stato dell'indice per informazioni sull'avanzamento e messaggi di errore. Non puoi utilizzare un indice per le query finché non raggiunge lo stato READY. Gli stati di indicizzazione possibili sono:

  • CREATING: la creazione dell'indice è in corso.
  • ALREADY_EXISTS: impossibile completare l'operazione perché questo indice esiste già.
  • ERROR: la creazione dell'indice non è riuscita. Correggi i dati che hanno causato l'errore, elimina questo indice e poi crealo di nuovo.
  • READY: creazione dell'indice completata. L'indice è pronto per essere utilizzato per le query.

Eliminazione di un indice composto

Metodo HTTP e URL:

DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"

PowerShell

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

Elenco di tutti gli indici composti

Per elencare tutti gli indici compositi per un database in modalità Datastore, utilizza il metodo projects.indexes.list.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto

Metodo HTTP e URL:

GET https://datastore.googleapis.com/v1/projects/project-id/indexes

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"

PowerShell

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

{
 "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"
  }
 ]
}