Guide de référence sur le fichier index.yaml

App Engine prédéfinit un index simple sur chaque propriété d'une entité. Une application App Engine peut définir d'autres index personnalisés dans un fichier de configuration d'index appelé index.yaml. Le serveur de développement peut générer la configuration d'index requise par votre application lorsqu'il exécute ces requêtes pendant que vous testez votre application. Vous pouvez ajuster des index manuellement en modifiant le fichier index.yaml avant d'importer l'application. Consultez la page Configurer des index Datastore pour en savoir plus sur le déploiement et la gestion des configurations d'index.

Exemple

Voici un exemple de fichier 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

Syntaxe

La syntaxe du fichier index.yaml utilise le format YAML. Le fichier index.yaml contient un seul élément de liste appelé indexes. Chaque élément de la liste représente un index lié à l'application.

Les éléments d'index peuvent comporter les éléments suivants :

Élément Description
kind Obligatoire. Genre de l'entité pour la requête. Il s'agit généralement du nom de la classe Model qui définit le modèle des entités.
properties

Liste de propriétés à inclure sous forme de colonnes de l'index, classée par ordre de tri : les propriétés utilisées dans les filtres d'égalité en premier, puis la propriété utilisée dans les filtres d'inégalité, et enfin les ordres de tri et leurs sens.

Chaque élément de la liste comporte les élément suivants :

name
Nom du datastore de la propriété.
direction
Sens du tri, à savoir asc pour un ordre croissant ou desc pour un ordre décroissant. Cet élément n'est obligatoire que pour les propriétés utilisées dans l'ordre de tri de la requête. Il doit correspondre à l'ordre utilisé par la requête. La valeur par défaut est asc.
ancestor yes si la requête comporte une clause ascendante (Query.ancestor() ou une clause ANCESTOR IS GQL). La valeur par défaut est no.

Index automatiques et index manuels

Lorsque le serveur Web de développement ajoute une définition d'index générée au fichier index.yaml, il effectue cette opération sous la ligne suivante, en l'insérant si nécessaire :

# AUTOGENERATED

Le serveur Web de développement considère toutes les définitions d'index situées en dessous de cette ligne comme étant automatiques. Il est susceptible de mettre à jour les définitions figurant sous cette ligne lorsque l'application génère des requêtes.

Toutes les définitions d'index situées au-dessus de cette ligne sont considérées comme étant contrôlées manuellement, et ne sont pas mises à jour par le serveur Web de développement. Ce dernier ne modifiera que les éléments situés sous la ligne, à condition que le fichier index.yaml complet ne décrive pas un index représentant une requête exécutée par l'application. Pour prendre le contrôle d'une définition d'index automatique, déplacez-la au-dessus de cette ligne.

Déployer le fichier de configuration d'index

Pour déployer le fichier de configuration d'index, exécutez la commande suivante :

gcloud

gcloud app deploy index.yaml

appcfg

Si vous installez le SDK App Engine d'origine, exécutez cette commande :

appcfg.py update_indexes [YOUR_APP_DIR]

Supprimer des index inutilisés

Lorsque vous modifiez ou supprimez un index dans la configuration d'index, l'index d'origine n'est pas automatiquement supprimé d'App Engine. Cela vous donne la possibilité d'utiliser une ancienne version de l'application pendant la création des index ou de revenir immédiatement à l'ancienne version si un problème est détecté dans une version plus récente.

Lorsque vous êtes certain de ne plus avoir besoin des anciens index, vous pouvez les supprimer d'App Engine comme suit :

gcloud datastore cleanup-indexes index.yaml
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python 2