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.
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
oALL_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
oDESCENDING
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" } ] }