How can I remove unused indexes in Google Application Engine?

I've accidentally added a new filter to my GAE application. The status of the index is 'serving' now - however I don't need that index at all and I'd like to remove. How can I do that?


It is documented here. Hope that helps.

Deleting Unused Indexes

When you change or remove an index from index.yaml, the original index is not deleted from App Engine automatically. This gives you the opportunity to leave an older version of the app running while new indexes are being built, or to revert to the older version immediately if a problem is discovered with a newer version.

When you are sure that old indexes are no longer needed, you can delete them from App Engine using the following command:

appcfg.py vacuum_indexes myapp/

This command deletes all indexes for the app that are not mentioned in the local version of index.yaml.


For GAE / Java, the documentation includes this information:

Deleting Unused Indexes

...

When you are sure that old indexes are no longer needed, you can delete them from App Engine using the vacuum_indexes action:

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

This command deletes all indexes for the app that are not mentioned in the local versions of datastore-indexes.xml and generated/datastore-indexes-auto.xml.


In Windows Google AppEngine Java, we have to use appcfg.cmd command to delete unused indexes of deployed application.

Syntax :

appengine-java-sdk-path\bin\appcfg.cmd vacuum_indexes project-root-path\poject-name\war\


As of Feb 2019 it's now:

gcloud datastore indexes cleanup index.yaml

For gae-java, as JochenJung mentioned, the "vacuum_indexes" tool will work, but you'll have to emulate a python project in the following way:

Note that the vacuum tool seems only to work when pointed at *.appspot.com, not the local dev. environment.

  • create app.yaml for your app and put this in your /myapp/ root directory, minimally:

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

where "version" is your app's version, "myproj" the GAE name of your project.

  • create an index.yaml and put it in the same root dir. Instead of laboriously putting into that file the index information for indices you want to keep, it turns out that the tool is going to give you a yes/no confirmation for each and every index it deletes, so it is simpler just to indicate that ALL indices should be dropped, and use the confirmation to preserve the ones you want to keep.

indexes:

# AUTOGENERATED

Then run the command as shown above,


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