使用一些索引属性查询数据存储

Querying Datastore using some of the indexed properties

我正在试用 Cloud Datastore 的索引,但我无法确定解决查询所需的配置。

我创建了一些同类实体(名为 "object"),它们都具有 5 个名称相同的属性(property_0、property_1、...、property_4).然后,我为该类型创建了一个复合索引,索引了所有 5 个属性,并在最后位置设置了 property_4,因为我想对其应用不等式过滤器。

索引的定义是:

indexes:
- kind: object
  ancestor: no
  properties:
  - name: property_0
    direction: asc
  - name: property_1
    direction: asc
  - name: property_2
    direction: asc
  - name: property_3
    direction: asc
  - name: property_4
    direction: asc

我试图解决的查询将始终对 property_4 应用不等式过滤器,并且可能对某些其他属性应用过滤器。一些例子:

唯一有效的查询是如果我过滤索引中的 every 属性,其余查询显示错误消息 "Your Datastore does not have the composite index (developer-supplied) required for this query."

不应该所有的查询都由创建的索引解决吗?或者我是否需要为我想要应用的每个过滤器组合创建一个索引? (即一个用于过滤 property_4 和 property_0 的索引;另一个用于 property_4 和 property_1;另一个用于 property_4、property_2 和 property_3; ...)

您是对的,您需要为要应用的过滤器的每个 组合创建索引。

您可以通过以下方式在 index.yaml 文件中指定单独查询的索引:

indexes:
- kind: object
  properties:
  - name: property_0
  - name: property_1
  - name: property_2
  - name: property_3
  - name: property_4

- kind: object
  properties:
  - name: property_3
  - name: property_4
  - name: property_0

...