我的gquery是这样的:
SELECT Distinct Path,Value FROM Entity WHERE PID="chichi"我得到的错误是
GQL query error: Your Datastore does not have the composite index (developer-supplied) required for this query.
我知道我使用的是带有等式查询的投影,我在index.yaml(复合索引文件)中添加了路径、值和计划id。如何在gcloud数据存储上执行此查询?
我已经在index.yaml文件中包含了所有可能的组合
index.yaml:
indexes:
- kind: Entity
properties:
- name: PID
- name: Value
- name: Path发布于 2018-02-02 09:15:03
我已经能够自己复制您的错误,创建一组具有您指定的属性的实体。为了消除错误,正如您所指出的,我必须创建一个索引。同时处理多个属性的查询不会自动定义为索引,因此必须手动编制索引。索引是在index.yaml文件中定义的,该文件应该如下所示:
indexes:
- kind: Entity
properties:
- name: PID
- name: Path
- name: Value当然,它可以包含更多的索引,以防您使用其他任何不同的索引。一旦创建了这个index.yaml文件,就可以使用以下命令将其上传到项目中。
gcloud datastore create-indexes index.yaml加载将需要一段时间,但一旦准备就绪,您将能够在Datastore > Indexes tab in the Console中找到它。

显示绿色滴答后,索引就可以提供了,您可以使用GQL查询数据存储内容:

请记住,有一些用于定义索引的最佳做法建议,以及您应该考虑的最重要的一个(为了运行最优的查询):
查询的完美索引(允许最有效地执行查询)是在以下属性上定义的,以便:
因此,请确保您的索引配置看起来像我共享的配置,并且它已正确地上载到您的项目中。
最后,在Datastore中有一些对投影查询的限制,把您的查询放在其中任何一个似乎都没有下降,所以在这种情况下不应该是一个问题。
https://stackoverflow.com/questions/48576467
复制相似问题