如何删除Google Application Engine中未使用的索引?

我不小心添加了一个新的filter到我的GAE应用程序。 索引的状态现在是“服务” – 但是我根本不需要这个索引,我想删除它。 我怎样才能做到这一点?

这里logging在案。 希望有所帮助。

删除未使用的索引

当您从index.yaml更改或删除索引时,原始索引不会自动从App Engine中删除。 这使您有机会在构build新索引的同时运行较早版本的应用程序,或者如果在较新的版本中发现问题,则立即恢复到旧版本。

如果您确定不再需要旧索引,则可以使用以下命令将其从App Engine中删除:

appcfg.py vacuum_indexes myapp/ 

此命令将删除本地版本的index.yaml中未提及的应用程序的所有索引。

对于GAE / Java,文档包含以下信息 :

删除未使用的索引

如果您确定不再需要旧索引,则可以使用vacuum_indexes操作将其从App Engine中删除:

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

此命令将删除本地版本的datastore-indexes.xml和generated / datastore-indexes-auto.xml中未提及的应用程序的所有索引。

Windows的Google AppEngine Java中 ,我们必须使用appcfg.cmd命令来删除已部署应用程序的未使用索引

句法 :

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

对于gae-java,就像JochenJung提到的那样,“vacuum_indexes”工具可以工作,但是你必须用下面的方法模拟一个python项目:

请注意,真空工具似乎只能指向* .appspot.com,而不是本地开发。 环境。

  • 为你的应用程序创buildapp.yaml,并把它放在你的/ myapp / root目录下,
 application: myproj version: 4 runtime: python api_version: 1 

其中“版本”是您的应用程序的版本,“myproj”是您的项目的GAE名称。

  • 创build一个index.yaml,并把它放在同一个根目录。 而不是费力地在这个文件中存放你想要保留的索引的索引信息,事实certificate这个工具会给你一个是/否的确认它删除的每一个索引,所以只需要指出ALL应删除指数,并使用确认来保留您想要保留的指数。
 indexes: # AUTOGENERATED 

然后运行如上所示的命令,

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

如果你使用maven mvn appengine:vacuum_indexes 。 不需要mvn appengine:update ,该命令更新远程服务器。

这里有一个Maven命令的完整列表。

在使用Java的Windows上,这个命令为我工作:

 appcfg.cmd vacuum_indexes C:\Users\Name\AndroidStudioProjects\Project\backend\src\main\webapp\ 

注意:确保在webapp文件夹中有一个datastore-indexes.xml (这些索引将被保留)。