我得到以下异常:
Exception in thread "main" com.google.cloud.datastore.DatastoreException: no matching index found. recommended index is:
- kind: cp_outbox
properties:
- name: format
- name: occasion_name
- name: sent_datetime
- name: status
- name: send_date
在查询下方运行时:
SELECT * FROM cp_outbox where send_date <= '2018-03-14' and sent_datetime is null and format='test1' and status=0 and occasion_name='test'
所以我在查询中使用不等式运算符,我有复合索引:
但我仍然是例外。
通过查看错误,我认为属性的排序是个问题。如果这是真的,那么为什么这种排序很重要。
先谢谢。
答案 0 :(得分:3)
在提供查询时,属性顺序对于复合索引绝对重要。该顺序允许我们提供范围查询,而无需扫描索引表的大部分内容。作为一般规则,最终属性是您可以对不等式查询执行的操作,然后重命名属性顺序定义您可以使用的order by
子句顺序。
在您的查询send_date
中,您正在进行不等式,而您现有的复合索引仅允许occasion_name
。
如果您完全按照API返回的方式创建复合索引,则查询将起作用。