Java 如何删除内置数据存储索引

Java 如何删除内置数据存储索引,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,默认情况下,应用程序引擎为每个字段定义一个内置索引。我没有创造它们,我也不想要它们 我的实际实体仅消耗159MB,但索引额外消耗680MB。我只会对这些实体进行关键查询,所以我根本不需要任何索引。我怎样才能去掉这些 编辑:真空度索引的输出: Found 0 unused indexes on the server. Details: No indexes were deleted. vacuum_indexes completed successfully. 不能删除内置索引。它们是内置的

默认情况下,应用程序引擎为每个字段定义一个内置索引。我没有创造它们,我也不想要它们

我的实际实体仅消耗159MB,但索引额外消耗680MB。我只会对这些实体进行关键查询,所以我根本不需要任何索引。我怎样才能去掉这些

编辑:真空度索引的输出:

Found 0 unused indexes on the server.

Details:
No indexes were deleted.

vacuum_indexes completed successfully.

不能删除内置索引。它们是内置的:)

你可以做的是减少应用程序模型使用的索引数量。默认情况下,每个属性都在AppEngine中编制索引。我想你是认真的

要使属性未索引,请向de属性声明中添加一个参数,如下所示:

class MyModel(db.Model):
    FirstName = db.StringProperty(Indexed=False)
    LastName = db.StringProperty(Indexed=False)
    ...
这样,appengine将停止使用/创建该特定属性的索引。下次运行SDK控制台时,index.yaml文件将自动更新


最后一件事是执行
appcfg.py\u索引myapp/
。阅读有关上的最后一个命令的详细信息。

对于低级Java API,您需要对所有不希望有内置索引的属性使用setUninedIndexedProperty方法。 没有办法简单地更改文件中的某些定义并清除已有的索引项。
删除这些内置索引项(或创建新索引项)的唯一方法是重新写入所有实体。但是要注意,删除一个实体上的一个索引项将被视为配额中的两次完整写入,因为这实际上是两个索引项——一个按降序递增,另一个按降序递减。

这是开发服务器还是生产服务器?bihind索引的概念不是多多少少付费。这是关于性能的。这是Java的官方文档,我已经在数据存储中拥有800k个实体。这并没有告诉我如何删除已经存在的索引,而是告诉我如何在新插入的实体中不索引字段。
/appengine java sdk/bin/appcfg.sh\u index myapp/war
谷歌搜索为我提供了该链接。但是,在删除索引之前,必须停止使用它,使属性取消索引。请执行以下操作:1)更新模型声明[unindexed property]。2) 删除
数据存储索引.xml
文件。3) 运行“执行大多数应用程序请求”(这将记录SELECTs.4使用的索引)请参阅,然后索引=False应为小写。否则,TypeError:\uuuu init\uuuu()得到一个意外的关键字参数“Indexed”-->Indexed=False