无法从 App Engine Go 获取数据存储区复合索引工作

问题描述 投票:0回答:1

我有一个使用数据存储区的 Google App Engine Go 应用程序。我正在尝试实现一个涉及两个属性不等式的查询。我无法使综合索引发挥作用。

这是该类型的架构:

type LicenseKeyUsage struct {
    First      time.Time
    Last       time.Time
    Count      int
    Days       int
}

这是查询的片段(lastMin 设置为时间,d 设置为整数):

aggregationCountQuery := datastore.NewQuery("LicenseKeyUsage").
    FilterField("Last", ">=", lastMin).
    FilterField("Days", ">=", d).
    NewAggregationQuery().
    WithCount("active_count")

这是我的

index.yaml
,与
app.yaml
位于同一目录中:

indexes:

- kind: LicenseKeyUsage
  properties:
  - name: Last
  - name: Days

我使用命令

gcloud app deploy index.yaml
部署索引文件,然后转到数据存储控制台等待索引准备就绪,然后更新应该索引的实体。

从控制台来看,索引未显示任何实体。

如果我尝试运行查询,则会收到以下错误:

rpc error: code = FailedPrecondition desc = The query contains range and inequality filters on multiple fields, please refer to the documentation for index selection best practices: https://cloud.google.com/datastore/docs/multiple-range-fields. One possible index to serve the query is:
- kind: LicenseKeyUsage
  properties:
  - name: Days
  - name: Last

首先,推荐索引中的属性顺序与我在查询中的字段过滤器的顺序不匹配。我切换到该索引,但仍然遇到相同的错误。

知道这里出了什么问题吗?

google-app-engine google-cloud-datastore google-app-engine-go
1个回答
0
投票

我发现了这个问题的原因。索引是为默认数据库创建的,但查询针对的是非默认数据库。

© www.soinside.com 2019 - 2024. All rights reserved.