google-app-engine - Google Datastore 中的索引号是否有最大大小

标签 google-app-engine objectify google-cloud-datastore gql

我有一个应用程序在 Google Datastore 中存储数字字段并为其编制索引。在内部,这些是使用 Java/Objectify 创建和索引的,实体是用 @Index 注释持久注释的,用于我们希望搜索的字段...

@Index
private Long fieldOne;

@Index
private Long fieldTwo;

一切正常,直到我尝试使用这些索引字段搜索实体。 fieldOne 的值为 5709068098338816 并且可以使用 GQL 对其进行搜索:

SELECT * 
FROM MyEntity
WHERE fieldOne = 5709068098338816

但是,fieldTwo 的值为 3572054303678568400,这就是我的问题开始的地方。出于某种原因,我无法在 GQL 中使用此值或使用 objectify 进行搜索。即使我可以在谷歌数据存储中看到值,以下 GQL 也不会返回任何结果:

SELECT * 
FROM MyEntity
WHERE fieldTwo = 3572054303678568400

我可以看到这已存储在 Google 数据存储区中并已编入索引。

我的问题是,Google Datastore 中索引数字的大小是否有限制?这个值是否有可能太大而无法正确索引,或者我可能完全错过了其他东西?该值低于最大 Long 值,因此我不确定发生了什么。

任何帮助将不胜感激。 干杯!

最佳答案

这可能是由于您的 fieldTwo 长度超过 16 位。 App Engine Datastore 可以为主键使用 Long 值 - 但在下面链接的文档中 - 它指出:

Each ID can be up to 16 decimal digits long.

您的字段不是主键,但我猜它在索引时遵循与 Long PrimaryKey 相同的模式。

https://cloud.google.com/appengine/docs/java/datastore/entities

关于google-app-engine - Google Datastore 中的索引号是否有最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865648/

相关文章:

python - 应用程序引擎 ListProperty 上的时间不平等过滤器在链接时失败

google-app-engine - Go + App Engine 数据存储区 : How to filter out rows that are null?

python - cloudsql 和 appengine 数据存储 : cursor vs. 偏移量和限制

python - 更新 App Engine 任务?

google-app-engine - "ImportError: No module named _ssl"来自 Google App Engine 的 dev_appserver.py

google-app-engine - 谷歌应用引擎 + 对象化 : Register object once?

google-app-engine - 将 GAE 本地测试与 Objectify 结合使用

google-app-engine - 如何在 Objectify 中对响应进行排序?

android - 在 Android 中上传到 App Engine Blob 存储

java - 如何使用过滤查询从应用程序引擎中删除数据