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 :
|
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