在谷歌应用引擎上修改/删除数据存储索引

时间:2010-08-13 10:08:37

标签: google-app-engine

我的旧web.xml是

<datastore-index kind="TBL" ancestor="false"> 
    <property name="Col1" direction="asc" /> 
    <property name="Col2" direction="desc" />
    <property name="Col3" direction="asc" />
    <property name="Col4" direction="asc" />
    <property name="Col5" direction="asc" />
    <property name="Col6" direction="asc" />
    <property name="Col7" direction="asc" />
    <property name="Col8" direction="asc" />                         
</datastore-index>  

我的新web.xml是

<datastore-index kind="TBL" ancestor="false"> 
    <property name="Col1" direction="asc" /> 
    <property name="Col2" direction="desc" />
    <property name="Col3" direction="asc" />
    <property name="Col4" direction="asc" />
    <property name="Col5" direction="asc" />
    <property name="Col6" direction="desc" />
    <property name="Col7" direction="asc" />
    <property name="Col8" direction="asc" />                         
</datastore-index>  

在服务器上创建索引

TBL  
------------
Col2 ▲ , Col1 ▲ , Col6 ▼  
Col4 ▲ , Col1 ▲ , Col6 ▼  
Col5 ▲ , Col8 ▲ , Col1 ▲ , Col6 ▲ => I got error for this index
Col8 ▲ , Col1 ▲ , Col6 ▲   
Col1 ▲ , Col2 ▼ , Col3 ▲ , Col4 ▲ , Col5 ▲ , Col7 ▲ , Col8 ▲ 
Col1 ▲ , Col2 ▼ , Col3 ▲ , Col4 ▲ , Col5 ▲ , Col6 ▼ , Col7 ▲ , Col8 ▲ 
Col1 ▲ , Col7 ▲  
Col1 ▲ , Col6 ▲  
Col1 ▲ , Col6 ▼  

我收到第三个索引的索引未找到错误。我想在所有索引中修改col6的方向并将其设置为“desc”。

我该怎么做?或者如何删除索引?

任何人

3 个答案:

答案 0 :(得分:5)

您正在寻找vacuum_indexes命令。

  

http://code.google.com/appengine/docs/python/tools/uploadinganapp.html#Deleting_Unused_Indexes

这适用于Java和Python应用程序。事实上,Java的appcfg.sh根本不支持这一点,所以如果你正在运行Java应用程序,你将需要Python SDK。

答案 1 :(得分:1)

我的环境/流程:

  • 我在名为“datastore-indexes.xml”的文件中定义和维护(添加,删除等)索引。
  • 我使用Maven任务“mvn”构建和部署我的WAR文件 应用服务引擎:部署”
  • 我使用“mvn appengine:deployIndex”任务部署索引。

当我运行这些任务时,我的构建会生成此目录“target \ appengine-staging \ WEB-INF \ appengine-generated”。

在此目录中,您将找到一个“index.yaml”文件,其中包含从“datastore-indexes.xml”文件生成的索引。

1. Open the Google Cloud SDK Shell, and cd to the directory with the "index.yaml" file.

2. In the shell, type "gcloud datastore indexes cleanup index.yaml"

3. It will prompt you to continue, and it will further notice indexes in the Cloud Datastore, that are not defined in the local "index.yaml" file.

4. Here it will prompt you to delete these indexes.

我认为你不能更新索引,只能删除(旧)和添加(新)索引。

答案 2 :(得分:0)

现在可以(2019-02-06)通过以下方式完成:

gcloud datastore indexes cleanup <INDEX_FILE>

https://cloud.google.com/sdk/gcloud/reference/datastore/indexes/cleanup