【发布时间】:2016-12-06 13:23:28
【问题描述】:
我编写了一段代码,该代码基于一个过滤器(以及同一属性的顺序)从数据存储中添加和检索实体 - 效果很好。但是当我尝试为更多属性添加过滤器时,我得到了:
PreconditionFailed: 412 没有找到匹配的索引。推荐的索引是:
- 种类:温度
属性:
- 名称:DeviceID
- 名称:创建
最终我发现我需要创建 index.yaml。我的看起来像这样:
indexes:
- kind: Temperature
ancestor: no
properties:
- name: ID
- name: created
- name: Value
它似乎已被识别,如控制台所示: that it has been updated 然而,当我运行我的代码(特别是这部分具有两个属性)时,它不起作用(仍然出现上述错误)(代码在 Compute Engine 上运行)。
query.add_filter('created', '>=', newStart)
query.add_filter('created', '<', newEnd)
query.add_filter('DeviceID', '=', devID)
query.order = ['created']
尝试在控制台上运行相同的查询会产生
您的数据存储区没有此查询所需的复合索引(开发人员提供)。
error. 搜索显示了另一个遇到同样问题的人,他设法通过更改 index.yaml 中属性的顺序来解决它,但这对我的情况没有帮助。有没有人遇到过类似的问题或者可以帮我解决一下?
【问题讨论】:
标签: python-2.7 google-compute-engine google-cloud-datastore