在GAE中过滤和排序

时间:2018-02-04 18:43:13

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

我正在尝试过滤和排序我的Kind =" sensordata" 在Google数据存储

Query<com.google.cloud.datastore.Entity> query 
= Query.newEntityQueryBuilder()
       .setKind("sensordata")                               
       .setFilter(PropertyFilter.eq("deviceguid",deviceGuid))
       .setOrderBy(OrderBy.desc("timestamp"))
       .build();

我的所有字段都已编入索引。 如果我删除.SetFilter或.setOrderBy,它的工作正常。

知道出了什么问题吗?

由于 沙

1 个答案:

答案 0 :(得分:2)

我怀疑datastore-indexes.xmlindex.yaml中缺少deviceguid + timestamp的索引:

<datastore-index kind="Sensordata" ancestor="false">
    <property name="deviceguid" direction="asc" />
    <property name="timestamp" direction="desc" />
</datastore-index>

或者你没有uploaded it

原因是使用简单过滤器或排序顺序的查询可以使用自动索引,但"Other forms of query require their indexes to be specified in the index configuration file"