Configurar índices con la API REST

En esta página se describe cómo crear, eliminar y enumerar índices compuestos del modo Datastore con la API REST del modo Datastore.

La CLI de Google Cloud proporciona una forma cómoda de acceder a la API REST del modo Datastore y gestionar tus índices compuestos. Sin embargo, puedes acceder directamente a la API REST del modo Datastore para crear tus propias herramientas de gestión de índices compuestos. Por ejemplo, puedes crear herramientas para automatizar el aprovisionamiento y la gestión de índices.

Autenticación y autorización

Para acceder a los métodos de la API REST de Firestore en modo Datastore que se indican a continuación, debes autenticar tu solicitud proporcionando un token de acceso de OAuth 2.0 de Google con uno de los siguientes permisos:

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

En los ejemplos de cURL y PowerShell que se muestran a continuación se usa el comando gcloud auth print-access-token para autenticar las solicitudes. Para obtener más información sobre cómo obtener un token de acceso, consulta el artículo sobre cómo usar OAuth 2.0 para acceder a las APIs de Google.

Autorización

El usuario, el grupo o la cuenta de servicio autenticados en la solicitud deben tener autorización para acceder a los métodos de la API. Para autorizar el acceso a los métodos de indexación, asigna uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):

  • Para obtener acceso de lectura y edición completo al índice, asigna uno de estos roles:

    • roles/owner
    • roles/editor
    • roles/datastore.owner
    • roles/datastore.indexAdmin
  • Para obtener acceso de lectura de índice (obtener y enumerar), concede uno de estos roles:

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

Para obtener más información sobre cómo asignar estos roles, consulta cómo conceder, cambiar y revocar el acceso a los recursos.

Antes de empezar

En los ejemplos de curl y PowerShell que se muestran a continuación se usa Google Cloud CLI para autenticar las solicitudes. Para ejecutar estos ejemplos de forma local, instala e inicializa la CLI de Google Cloud.

También puedes acceder a gcloud y curl desde la consolaGoogle Cloud con Cloud Shell.

Iniciar Cloud Shell

Crear un índice compuesto

Para crear un índice compuesto, usa el método projects.indexes.create.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • kind: el tipo de entidad que se va a indexar
  • include-ancestors: indica si se deben incluir o no los ancestros de la entidad en el índice para admitir consultas de ancestros. Puede ser NONE o ALL_ANCESTORS.
  • property-name: la propiedad que se va a indexar. Deben especificarse dos o más propiedades.
  • index-direction: el orden de clasificación de cada propiedad, ASCENDING o DESCENDING

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Explorador de APIs

Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel APIs Explorer se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, rellena los campos obligatorios y haz clic en Ejecutar.

Deberías recibir una respuesta JSON similar a la siguiente:

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

Obtener el estado de indexación

El modo Datastore asigna a cada índice un ID único. Puedes usar este ID de índice para obtener el estado de un solo índice con el método projects.indexes.get:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto
  • index-id: ID de un índice compuesto

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

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

PowerShell

Ejecuta el comando siguiente:

$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

Explorador de APIs

Abre la página de referencia del método. El panel APIs Explorer se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

Deberías recibir una respuesta JSON similar a la siguiente:

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

Estado del índice

Consulta el estado del índice para obtener información sobre el progreso y mensajes de error. No puedes usar un índice en las consultas hasta que alcance el estado READY. Entre los posibles estados de indexación se incluyen los siguientes:

  • CREATING: se está creando el índice.
  • ALREADY_EXISTS: no se puede completar la operación porque este índice ya existe.
  • ERROR: no se ha podido crear el índice. Corrija los datos que han provocado el error, elimine este índice y, a continuación, cree el índice de nuevo.
  • READY: se ha completado la creación del índice. El índice está listo para usarse en las consultas.

Eliminar un índice compuesto

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

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

PowerShell

Ejecuta el comando siguiente:

$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

Explorador de APIs

Abre la página de referencia del método. El panel APIs Explorer se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

Deberías recibir un código de estado que indique que la operación se ha realizado correctamente (2xx) y una respuesta vacía.

Mostrar todos los índices compuestos

Para obtener una lista con todos los índices compuestos de una base de datos en modo Datastore, usa el método projects.indexes.list.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: tu ID de proyecto

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

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

PowerShell

Ejecuta el comando siguiente:

$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

Explorador de APIs

Abre la página de referencia del método. El panel APIs Explorer se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.

Deberías recibir una respuesta JSON similar a la siguiente:

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