60 votes

Comment puis-je supprimer les index inutilisés dans Google Application Engine ?

J'ai accident accident accident de l'ajout un nouveau filtre à mon application GAE. L'état de l'index est maintenant "en service", mais je n'ai pas du tout besoin de cet index et j'aimerais le supprimer. Comment puis-je le faire ?

5 votes

Ce serait génial si vous pouviez les supprimer avec la console du navigateur =(

95voto

fuentesjr Points 10360

Il est documenté ici . J'espère que cela vous aidera.

Suppression des index inutilisés

Lorsque vous modifiez ou supprimez un index de l'index.yaml, l'index original n'est pas pas supprimé de l'App Engine automatiquement. Cela vous donne la possibilité de laisser une ancienne version de l'application pendant que les nouveaux index sont en cours de construction, ou de revenir à la ancienne version immédiatement si un problème est découvert avec une version plus récente.

Lorsque vous êtes sûr que les anciens index ne sont plus nécessaires, vous pouvez les supprimer d'App Engine en utilisant la commande suivante commande suivante :

appcfg.py vacuum_indexes myapp/

Cette commande supprime tous les index de l'application qui ne sont pas mentionnés dans la version locale de index.yaml.

1 votes

@fuentesjr : J'ai pris la liberté d'ajouter le texte/code cité à votre message.

2 votes

Cela semble fonctionner uniquement pour la version Python :-( En utilisant le JavaSDK, le paramètre vacuum_indexes est absent. Il est également inutile d'utiliser la commande appcfg.py, car Java ne stocke pas les index dans index.yaml. Cela signifie que vous devriez créer ce fichier vous-même et essayer de saisir tous les index de la manière dont vous les avez définis dans le xml de Java.

0 votes

Si je supprime un index de index.yaml, GAE continuera-t-il à créer cet index ou dois-je le supprimer avec le processus mentionné ?

26voto

mjn Points 19315

Pour GAE / Java, la documentation comprend cette information :

Suppression des index inutilisés

...

Lorsque vous êtes sûr que les anciens index ne sont plus nécessaires, vous pouvez les supprimer de App Engine en utilisant l'action vacuum_indexes :

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war

Cette commande supprime tous les index pour l'application qui ne sont pas mentionnés dans les dans les versions locales de datastore-indexes.xml et de generated/datastore-indexes-auto.xml.

2 votes

ATTENTION : Pour moi, il semblait seulement prendre en considération datastore-indexes-auto.xml. Cela signifie qu'il a proposé de supprimer les index qui étaient mentionnés dans datastore-indexes.xml en prétendant qu'ils n'étaient plus utilisés (alors qu'ils l'étaient). En dehors de cela, cela a fonctionné pour moi en supprimant mes index d'erreur et je n'ai pas eu à créer de fichiers yaml comme les autres réponses le suggèrent.

0 votes

Je suis sous Windows et j'ai utilisé la commande "appcfg.cmd vacuum_indexes c." : \myappdir\war "avec succès. Mon navigateur Web a été lancé pour effectuer l'authentification. J'ai dû coller un code.

1 votes

Si vous obtenez une erreur de type "Either the access code is invalid or the OAuth token is revoked.Details : invalid_grant", essayez de supprimer le fichier ".appcfg_oauth2_tokens_java" dans votre répertoire utilisateur.

7voto

Bovard Points 436

En février 2019, c'est maintenant :

gcloud datastore indexes cleanup index.yaml

5voto

NovelGuy Points 122

Sur Windows Google AppEngine Java nous devons utiliser appcfg.cmd pour supprimer les index inutilisés de l'application déployée.

Syntaxe :

appengine-java-sdk-path \bin\appcfg.cmd vacuum_index project-Root-path \poject -name \war\

4voto

larham1 Points 2088

Pour gae-java, comme JochenJung l'a mentionné, l'outil "vacuum_indexes" fonctionnera, mais vous devrez émuler un projet python de la manière suivante :

Notez que l'outil vacuum ne semble fonctionner que lorsqu'il est dirigé vers *.appspot.com, et non vers l'environnement de développement local.

  • créez app.yaml pour votre application et placez-le dans votre répertoire racine /myapp/, au minimum :

    application: myproj
    version: 4
    runtime: python
    api_version: 1

où "version" est la version de votre application, "myproj" le nom GAE de votre projet.

  • créer un index.yaml et le mettre dans le même répertoire racine. Au lieu de mettre laborieusement dans ce fichier les informations d'index pour les index que vous voulez conserver, il s'avère que l'outil va vous donner une confirmation oui/non pour chaque index qu'il supprime, il est donc plus simple d'indiquer que TOUS les index doivent être supprimés, et d'utiliser la confirmation pour préserver ceux que vous voulez conserver.

    indexes:

    AUTOGENERATED

Ensuite, exécutez la commande comme indiqué ci-dessus,

  /appcfg.py vacuum_indexes /path/to/myproj/

1 votes

J'utilise Java GAE. Cela a marché comme sur des roulettes. Cependant, j'ai dû mettre à jour le fichier app.yaml à quelque chose comme : application: myproj version: 4 runtime: python api_version: 1 handlers: -url: / script: home.py car je recevais une erreur No UrlMap entires found in application configuration en cours d'exécution vaccum_indexes . De plus, pour que ce soit clair, les deux app.yaml et index.yaml doit être placé dans votre war/WEB-INF dossier. Alors la commande à exécuter, à titre d'exemple, serait : appcfg.py vacuum_indexes /path/to/myproj/WEB-INF

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X