我的实体Word得到了这样的索引:
改变▲+类型▲
我已经向数据存储添加了一个实体,并且可以在控制台中成功查询它,如下所示:
KIND Word
已更改为大于0的数字
但是如果我像这样在过滤器中添加第二个字段:
KIND Word
已更改为大于0的数字
type是一个名词
的字符串
它将失败并显示错误“您需要索引来执行此查询。”
在我看来,它所要求的确切指数已经存在。任何人都可以对此有所了解吗?
答案 0 :(得分:1)
获取所需索引的最佳方法是在您的devserver上运行查询,确保您点击可以在生产中执行的每个查询。
当您处于开发阶段时,开发服务器将在您的xml / yaml(java / python)中创建应用程序所需的所有索引。如果您没有在您的devserver上点击该特定查询,则该索引不在您的xml / yaml中,您需要手动添加它。
当您使用数据存储区时,这是一种范式转换,但您必须了解,出于可伸缩性原因,数据存储区无法进行任何计算。它只会返回您对表的扫描。当您在表中保存一个实体时,在场景后面,数据存储区实际上会多次保存它,每个索引一个,已经为该索引排序。因此,即使您具有参数1的索引和参数2的单独索引,也不一定会为参数1和参数2创建复合索引。 2.因此,如果您不在xml / yaml中创建该复合索引,则“强制”数据存储区在表之间进行连接,但遗憾的是,这不是。
我把它作为最佳实践来点击每个查询,我可以在开发服务器中使用我的代码,然后查看我创建的索引。您只需要小心不要创建大量的索引,因为它们会影响您的配额并最终导致您付出代价(如果您的应用当然已启用结算)。
答案 1 :(得分:0)
为了查询两个字段,您需要一个组合索引,而不是两个字段的单独索引。
有关数据存储索引的详细信息,请查看此内容:
https://developers.google.com/appengine/articles/indexselection