【问题标题】:Google App Engine query without index没有索引的 Google App Engine 查询
【发布时间】:2012-12-11 17:42:28
【问题描述】:

我有一个已部署的 GAE 应用程序,我注意到我有这个简单的查询:

MBObject.query(MBObject.groupId == group.id).fetch()

groupIdndb.StringProperty(indexed=True)

查看我的 index.yaml 文件,甚至我的 GAE 仪表板(在 appengine.google.com)中的数据存储索引,无论如何都没有列出此属性的索引。这通常意味着我在上传之前没有在开发模式下测试整个应用程序,所以我必须手动插入索引。

但是,查询工作正常。它成功返回了我想要的所有对象。我想知道这怎么可能?为什么即使通过 groupId 的查询也没有在我的 index.yaml 和仪表板中列出?它不应该引发一些错误吗?

【问题讨论】:

    标签: google-app-engine app-engine-ndb


    【解决方案1】:

    GAE 自动索引所有实体,您的查询不需要在 index.yaml 中定义特定的索引,因为您只查询一个属性(即使您查询多个属性,它也不会创建任何实体)。

    如果您要订购此查询,可以说是 date 属性,如果您要在 SDK 中运行它或者您可以手动编写它们,它将在 index.yaml 中创建一个索引定义。

    来自docs

    应用程序进行的每个数据存储查询都需要相应的 指数。简单查询的索引,例如对单个查询的查询 属性,是自动创建的。复杂查询的索引必须 在名为 index.yaml 的配置文件中定义。这个文件是 与应用程序一起上传以在数据存储中创建索引。

    【讨论】:

    • 哦,等一下,如果我按日期属性排序或查询涉及多个属性,那么它需要明确定义吧?
    • 这个nose plugin 将在您运行测试时创建索引:github.com/jkrebs/nose-gae-index
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多