首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GQuery中使用投影属性和等式过滤器?

如何在GQuery中使用投影属性和等式过滤器?
EN

Stack Overflow用户
提问于 2018-02-02 05:51:40
回答 1查看 438关注 0票数 2

我的gquery是这样的:

代码语言:javascript
复制
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文件中包含了所有可能的组合

代码语言:javascript
复制
index.yaml:
indexes:
- kind: Entity
  properties:
  - name: PID  
  - name: Value
  - name: Path
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-02 09:15:03

我已经能够自己复制您的错误,创建一组具有您指定的属性的实体。为了消除错误,正如您所指出的,我必须创建一个索引。同时处理多个属性的查询不会自动定义为索引,因此必须手动编制索引。索引是在index.yaml文件中定义的,该文件应该如下所示:

代码语言:javascript
复制
indexes:
- kind: Entity
  properties:
  - name: PID
  - name: Path
  - name: Value

当然,它可以包含更多的索引,以防您使用其他任何不同的索引。一旦创建了这个index.yaml文件,就可以使用以下命令将其上传到项目中。

代码语言:javascript
复制
gcloud datastore create-indexes index.yaml

加载将需要一段时间,但一旦准备就绪,您将能够在Datastore > Indexes tab in the Console中找到它。

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

请记住,有一些用于定义索引的最佳做法建议,以及您应该考虑的最重要的一个(为了运行最优的查询):

查询的完美索引(允许最有效地执行查询)是在以下属性上定义的,以便:

  1. 相等筛选器中使用的属性
  2. 不等式过滤器中使用的属性
  3. 按排序顺序使用的属性

因此,请确保您的索引配置看起来像我共享的配置,并且它已正确地上载到您的项目中。

最后,在Datastore中有一些对投影查询的限制,把您的查询放在其中任何一个似乎都没有下降,所以在这种情况下不应该是一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48576467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档