我正在试用Cloud Datastore的索引,但我无法弄清解决查询所需的配置。
我已经创建了几个相同种类的实体(命名为 "对象"),它们都有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上应用不等式过滤器, 而在其他一些属性上可能会有过滤器。一些例子。
唯一有效的查询是,如果我过滤了 每一 索引中的属性,其余的都显示错误信息 "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;......)
你是正确的,你需要为以下实体创建索引 每一 的组合来应用过滤器。
您可以在下面的列表中为单独的查询指定索引。索引.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
...