我编写了一段代码,根据一个过滤器(以及同一属性上的顺序)从数据存储区添加和检索实体 - 运行正常。但是当我尝试为更多属性添加过滤器时,我得到了:
PreconditionFailed:412找不到匹配的索引。推荐指数为:
- 种类:温度
属性:
- 名称:DeviceID
- 名称:创建
最终我发现我需要创建index.yaml。我看起来像这样:
indexes:
- kind: Temperature
ancestor: no
properties:
- name: ID
- name: created
- name: Value
似乎可以认识到,正如控制台所示: that it has been updated 然而,当我运行我的代码(特别是这部分有两个属性)时,它不起作用(仍然得到上述错误)(代码在计算引擎上运行)。
query.add_filter('created', '>=', newStart)
query.add_filter('created', '<', newEnd)
query.add_filter('DeviceID', '=', devID)
query.order = ['created']
尝试在控制台上运行相同的查询生成
您的数据存储区没有此查询所需的复合索引(开发人员提供)。
error.搜索显示另一个人有同样的问题,他设法通过更改index.yaml中属性的顺序来修复它,但这对我的情况没有帮助。有没有人遇到类似的问题或者可以帮我解决问题?
答案 0 :(得分:1)
您需要创建错误消息中建议的确切索引:
- kind: Temperature
ancestor: no
properties:
- name: DeviceID
- name: created
具体来说,索引中的第一个属性需要是DeviceID
而不是ID
,索引中的最后一个属性需要是您在不等式过滤器中使用的属性(所以你不能将Value
作为索引中的最后一个属性。)