Google Datastore Composite索引问题

时间:2018-03-16 10:52:47

标签: google-cloud-datastore gql

我得到以下异常:

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'

所以我在查询中使用不等式运算符,我有复合索引:

enter image description here

但我仍然是例外。

通过查看错误,我认为属性的排序是个问题。如果这是真的,那么为什么这种排序很重要。

先谢谢。

1 个答案:

答案 0 :(得分:3)

在提供查询时,属性顺序对于复合索引绝对重要。该顺序允许我们提供范围查询,而无需扫描索引表的大部分内容。作为一般规则,最终属性是您可以对不等式查询执行的操作,然后重命名属性顺序定义您可以使用的order by子句顺序。

在您的查询send_date中,您正在进行不等式,而您现有的复合索引仅允许occasion_name

如果您完全按照API返回的方式创建复合索引,则查询将起作用。