使用 Firestore 本机进行对象化 - 未找到匹配的索引

Objectify with Firestore native - no matching index found

我有一组非常简单的 Java 对象,我使用 Objectify 6.0.7 存储在 Google Firestore 数据库(本机模式)中。存储、删除和查询对象都可以正常工作,但是在单个字段上使用 orderBy 子句的查询会失败,并显示“找不到匹配的索引”。完全相同的代码在 Datastore 项目中完美运行(因此 Java 代码不存在问题)。

我找不到关于 Objectify 是否可以与 Firestore 一起使用的明确文档,我怀疑这就是问题所在。想法?

这是查询:

ofy().load().type(Flight.class).order("-date").list();

这是该集合中的示例记录(法语区域设置,但日期对象有效):

airTime: "0.8666666666666667"
date: 20 décembre 2020 à 19:51:41 UTC-5
engineStartTime: 20 décembre 2020 à 19:51:41 UTC-5
engineStopTime: 20 décembre 2020 à 21:14:41 UTC-5
flightTime: 1.3833333333333333
from: "CYQB"
landingTime: 20 décembre 2020 à 21:08:41 UTC-5
takeOffTime: 20 décembre 2020 à 20:16:41 UTC-5
to: "CYVB"

使用升序,例如order("desc") 也失败了,但是从查询中完全删除 .order('-desc') 函数不会导致任何错误,但当然 returns 会导致随机顺序。

我从文档中了解到,所有单字段索引都应默认在 Firestore 中创建,但我看不到在控制台中创建单字段索引的方法。因此,我假设订单函数中使用的 date 字段存在索引。

Objectify v6 使用 com.google.cloud:google-cloud-datastore 库作为低级 API。我很确定该库只能在数据存储模式下工作。 Google 有一个完全不同(并且更原始)的 Java Firestore 模式库。

所以我认为您现在需要使用 Datastore 模式而不是 Firestore 模式。