我正在尝试过滤和排序我的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,它的工作正常。
知道出了什么问题吗?
由于 沙
答案 0 :(得分:2)
我怀疑datastore-indexes.xml或index.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"