如何删除 Google Application Engine 中未使用的索引?
-
03-07-2019 - |
题
我有 不小心添加了 我的 GAE 应用程序的新过滤器。索引的状态现在是“正在服务”——但是我根本不需要该索引,我想删除它。我怎样才能做到这一点?
解决方案
此处记录在案。希望有所帮助。
删除未使用的索引
更改或删除索引时 来自index.yaml,原始索引是 未从App Engine中删除 自动。这给你了 离开旧版本的机会 应用程序运行时新索引 正在建造,或恢复到 如果有问题,请立即使用旧版本 发现版本较新。
当您确定旧索引是 不再需要,你可以删除它们 来自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和。的本地版本 生成/数据存储区的索引-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 时才起作用,而不是本地开发者。环境。
- 为您的应用程序创建 app.yaml 并将其放入您的 /myapp/ 根目录中,至少:
application: myproj
version: 4
runtime: python
api_version: 1
其中“version”是您应用程序的版本,“myproj”是您项目的 GAE 名称。
- 创建一个index.yaml并将其放在同一根目录中。事实证明,该工具将为您删除的每个索引提供是/否确认,而不是费力地将您想要保留的索引的索引信息放入该文件中,因此更简单的是指示 ALL应删除索引,并使用确认来保留您想要保留的索引。
indexes:
# AUTOGENERATED
然后运行如上所示的命令,
/appcfg.py vacuum_indexes /path/to/myproj/
截至2019年2月,现在是:
gcloud datastore indexes cleanup index.yaml
如果您使用 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
(这些索引将不受影响)。
使用当前版本的gcloud,您只需执行以下操作:
gcloud datastore cleanup-indexes index.yaml
比调用appcfg.cmd [...]更直观。
gcloud datastore cleanup-indexes /path/to/file/index.yaml
此命令不再有效。
gcloud datastore index cleanup /path/to/index.yaml
这是新命令。
您应该在 google cloud console
中运行它们。通常,您可以使用 google cloud console
中的 file upload
功能上传 index.yaml
文件。你的文件转到一个直接叫做 _admin
的 cd
到那里并打电话,
gcloud数据存储区索引清理index.yaml
提示
如果您在 java项目中使用 datastore
,则您有 datastore-indexes.xml
而不是 index.yaml 代码>。如果您不知道在哪里查找,可能会在查找
index.yaml
文件时遇到一些麻烦。
您可以通过查看IDE中的 deploy console
来查找 index.yaml
文件的路径。