AppEngine复合索引没有关于属性的简单索引

时间:2014-04-14 01:32:34

标签: google-app-engine indexing google-cloud-datastore

所以我通过Objectify(Java)使用Google AppEngine的数据存储区。我可以使用@Indexed注释(工作)定义简单索引,我可以在datastore-indexes.xml中定义复合索引。

假设我有这样的课程

class X{
   @Indexed public String a;
   @Indexed public String b;
}

和综合指数

<datastore-index kind="X" ancestor="false" source="manual">
    <property name="a" direction="asc" />
    <property name="b" direction="asc" />
</datastore-index>

我的成员是否还需要@Indexed,这意味着除了复合索引之外我还需要简单的索引(假设我只想查询两个成员的升序)?

我自己的测试似乎表明,但我不确定我是否只是做错了。

1 个答案:

答案 0 :(得分:1)

复合索引中的每个属性都必须自行编制索引,这会自动发生。如果您查看低级数据存储区API,您可以看到默认情况下为每个属性编制索引(.setProperty()),除非您告诉数据存储区不要将其编入索引(.setUnindexedProperty())。

如果未对属性编制索引,则此属性中的数据根本无法搜索。

来自文档:

  

只有在设置了索引值时,实体才会包含在索引中   对于索引中使用的每个属性;