Referencia de index.yaml

App Engine predefine un índice simple en cada propiedad de una entidad. Una aplicación de App Engine puede definir más índices personalizados en un archivo de configuración de índices llamado index.yaml. El servidor de desarrollo puede generar la configuración de índices que necesita tu aplicación cuando realiza estas consultas mientras pruebas tu app. Puedes ajustar los índices de forma manual si editas el archivo index.yaml antes de subir la aplicación. Consulta Configura índices de Datastore para obtener información sobre cómo implementar y administrar configuraciones de índices.

Ejemplo

El siguiente es un ejemplo de un archivo index.yaml:

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

# This pound sign is the syntax for a comment.

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

Sintaxis

La sintaxis de index.yaml es el formato YAML. El archivo index.yaml tiene un único elemento de lista llamado indexes. Cada elemento de la lista representa un índice de la aplicación.

Los elementos del índice pueden ser los siguientes:

Elemento Descripción
kind Obligatorio. El tipo de entidad de la consulta. Este debería ser el argumento kind proporcionado a datastore.NewKey cuando se crea la entidad.
properties

Se debe incluir una lista de las propiedades como columnas del índice, en el orden de clasificación deseado: primero las propiedades de los filtros de igualdad, luego las propiedades de los filtros de desigualdad y, por último, los órdenes de clasificación y sus direcciones.

Cada elemento de la lista se compone de los elementos siguientes:

name
El nombre del almacén de datos de la propiedad
direction
La dirección de clasificación, asc para ascendente o desc para descendente. Esto solo es necesario para las propiedades que se usan en los órdenes de clasificación de la solicitud y debe coincidir con la dirección de la consulta. El valor predeterminado es asc.
ancestor yes si la consulta tiene una cláusula principal (Query.ancestor()). El valor predeterminado es no.

Índices automáticos y manuales

Cuando el servidor de desarrollado web agrega una definición de índice generada a index.yaml, lo hace debajo de la línea siguiente, mediante una inserción, si es necesario:

# AUTOGENERATED

El servidor de desarrollo web considera todas las definiciones de índices debajo de esta línea como automáticas, y puede actualizar las definiciones existentes debajo de esta línea a medida que la aplicación realiza consultas.

Se considera que todas las definiciones de índices ubicadas por encima de esta línea son de control manual, por lo que el servidor de desarrollado web no las actualiza. El servidor web solo modificará lo que esté por debajo de la línea y lo hará solo si el archivo index.yaml completo no describe un índice que corresponda a una consulta que ejecutó la aplicación. Para tomar control sobre una definición de índice automática, colócala por encima de esta línea.

Implementa el archivo de configuración de índices

Para implementar el archivo de configuración de índices, ejecuta el comando siguiente:

gcloud

gcloud app deploy index.yaml

appcfg

Si instalas el SDK original de App Engine, puedes ejecutar:

appcfg.py update_indexes [YOUR_APP_DIR]

Borra índices en desuso

Cuando cambias o quitas un índice de la configuración de índices, el índice original no se borra de App Engine de manera automática. Esto te permite conservar una versión anterior de la aplicación para que se ejecute mientras los índices nuevos se compilan, o volver inmediatamente a la versión anterior si se descubre un problema en la versión nueva.

Cuando estés seguro de que no volverás a necesitar los índices anteriores, puedes borrarlos de App Engine de la manera siguiente:

gcloud datastore cleanup-indexes index.yaml
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go