错误:FAILED_PRECONDITION:找不到匹配的索引。推荐索引为:

时间:2018-07-06 21:02:58

标签: node.js google-cloud-platform google-cloud-datastore datastore google-query-language

因此,我试图像这样在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

我是否必须按照建议的顺序实际创建一个新索引?还是有一种方法可以使我不必创建另一个索引呢?谢谢!

1 个答案:

答案 0 :(得分:2)

是的,您需要创建一个新索引,显示的现有索引是等价的,因此它不能用于您的查询-属性顺序很重要(至少对于不等式而言)过滤器和排序)。查看相关的Google Datastore Composite index issue