【发布时间】:2010-10-23 06:23:07
【问题描述】:
我为我的 GAE 应用程序添加了 accidentally added 一个新过滤器。索引的状态现在是“服务” - 但是我根本不需要该索引,我想删除。我该怎么做?
【问题讨论】:
-
如果你能用浏览器控制台删除这些就太好了 =(
标签: google-app-engine indexing
我为我的 GAE 应用程序添加了 accidentally added 一个新过滤器。索引的状态现在是“服务” - 但是我根本不需要该索引,我想删除。我该怎么做?
【问题讨论】:
标签: google-app-engine indexing
记录在here。希望对您有所帮助。
删除未使用的索引
当您更改或删除索引时 从 index.yaml 中,原始索引为 未从 App Engine 中删除 自动地。这给你 离开旧版本的机会 在新索引时运行的应用程序 正在建造,或恢复到 如果出现问题,请立即使用旧版本 发现有较新的版本。
当您确定旧索引是 不再需要,您可以删除它们 从 App Engine 使用以下 命令:
appcfg.py vacuum_indexes myapp/此命令删除本地版本 index.yaml 中未提及的应用的所有索引。
【讨论】:
对于 GAE / Java,文档包括 this information:
删除未使用的索引
...
当您确定不再需要旧索引时,您可以 使用 Vacuum_indexes 操作从 App Engine 中删除它们:
./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war此命令删除应用程序中未提及的所有索引 datastore-indexes.xml 的本地版本和 生成/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\
【讨论】:
截至 2019 年 2 月,现在是:
gcloud datastore indexes cleanup index.yaml
【讨论】:
对于 gae-java,正如 JochenJung 所提到的,“vacuum_indexes”工具可以工作,但您必须通过以下方式模拟 python 项目:
请注意,真空工具似乎仅在指向 *.appspot.com 时才有效,而不是本地开发者。环境。
application: myproj
version: 4
runtime: python
api_version: 1
其中“version”是您应用的版本,“myproj”是您项目的 GAE 名称。
indexes:
# AUTOGENERATED
然后运行如上图所示的命令,
/appcfg.py vacuum_indexes /path/to/myproj/
【讨论】:
app.yaml 更新为:application: myproj version: 4 runtime: python api_version: 1 handlers: -url: / script: home.py,因为在运行vaccum_indexes 时出现错误No UrlMap entires found in application configuration。另外,为了清楚起见,app.yaml 和index.yaml 文件都应该放在你的war/WEB-INF 文件夹中。例如,要运行的命令是:appcfg.py vacuum_indexes /path/to/myproj/WEB-INF
如果您使用的是 maven mvn appengine:vacuum_indexes。不用mvn appengine:update,命令更新远程服务器。
maven 命令的完整列表here。
【讨论】:
在使用 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 indexes cleanup /path/to/index.yaml
这是新命令。
您应该在google cloud console 中运行它们。通常您可以使用google cloud console 中的file upload 功能上传index.yaml 文件。你的文件直接转到_admin 你可以cd 去那里打电话,
gcloud datastore indexes cleanup index.yaml
如果您在 java 项目 中使用datastore,您将使用datastore-indexes.xml 而不是index.yaml。如果您不知道在哪里查找,您可能很难找到 index.yaml 文件。
您只需在 IDE 中查看 deploy console 即可找到 index.yaml 文件的路径。
【讨论】:
gcloud datastore indexes cleanup 不处理 datastore-indexes.xml 文件。为了弥补这一差距,我将 datastore-indexes.xml 转换为 index.yaml 使用:gcloud beta app migrate-config datastore-indexes-xml-to-yaml <path to datastore-indexes.xml> 这不会将 Java 项目切换为使用 index.yaml,即在尝试清理数据存储索引之前需要重复