因此,我试图像这样在Google Cloud的数据存储区上运行查询:
let query = datastore.createQuery(dataType)
.select(["id", "version", "lm", "name"])
.filter("owner", "=", request.params.owner)
.filter("lm", ">=", request.query.date_start)
.groupBy(["lm"])
.order("lm")
但是我遇到一个错误,指出
no matching index found. recommended index is:
- kind: Entry
properties:
- name: lm
- name: id
- name: name
- name: version
当我使用id
而不是lm
来运行所有方法的查询时,我没有遇到任何错误。
这是因为在我的index.yaml
文件中,我的索引是这样的吗?
- kind: Entry
properties:
- name: id
- name: version
- name: lm
- name: name
我是否必须按照建议的顺序实际创建一个新索引?还是有一种方法可以使我不必创建另一个索引呢?谢谢!
答案 0 :(得分:2)
是的,您需要创建一个新索引,显示的现有索引是不等价的,因此它不能用于您的查询-属性顺序很重要(至少对于不等式而言)过滤器和排序)。查看相关的Google Datastore Composite index issue