如何删除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
(这些索引将被保留)。