所以我通过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
,这意味着除了复合索引之外我还需要简单的索引(假设我只想查询两个成员的升序)?
我自己的测试似乎表明,但我不确定我是否只是做错了。
答案 0 :(得分:1)
复合索引中的每个属性都必须自行编制索引,这会自动发生。如果您查看低级数据存储区API,您可以看到默认情况下为每个属性编制索引(.setProperty()
),除非您告诉数据存储区不要将其编入索引(.setUnindexedProperty()
)。
如果未对属性编制索引,则此属性中的数据根本无法搜索。
来自文档:
只有在设置了索引值时,实体才会包含在索引中 对于索引中使用的每个属性;