google-app-engine - 使用数据存储 (NDB)、搜索 API 或两者来查看数据?

标签 google-app-engine full-text-search google-cloud-datastore app-engine-ndb

在 CMS 中,使用带排序的常规 NDB 查询检索客户列表。为了允许过滤姓名、公司名称和电子邮件,我创建了几个(有时很多)索引。情况并不理想,但可行。

现在有(实验性的)Search API .它似乎与数据存储(或 NDB)无关,但我的数据已经存在。

我想使用全文搜索并同时在多个字段上放置过滤器,那么我应该将我的数据保存在数据存储区中,并在搜索 API 的文档中复制部分数据吗?或者,作为 search example suggests , 完全跳过数据存储区。

最佳答案

我不太确定推荐的实现方法是什么,但搜索 API 似乎设计为主要用作附加的手动管理索引。在大多数情况下,将所有数据存储在搜索 API 中并不理想,因为您可以轻松地用不需要过滤或搜索的字段来破坏搜索 API 索引的大小,而且它的设计也不是很好地用于需要定期写入的情况。

我个人的建议是将所有数据留在 NDB 中,并设计类以使用搜索 API 创建包含相关可搜索数据的文档,通过在每次写入时更新搜索 API 版本来保持两种介质之间的一致性到数据存储版本(或者如果您正在大量写入数据,则使用任务/crons 或类似系统)。当在搜索 API 文档中过滤相关数据时,您应该存储在 UI 中显示的任何数据,因为手动加入搜索 API 结果和数据存储数据是不必要的密集,并且会严重减慢整个过程。

关于google-app-engine - 使用数据存储 (NDB)、搜索 API 或两者来查看数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112161/

相关文章:

java - 使用 Spring Framework 时是否可以在 Google App Engine 中使用 asm-x.x.jar?

java - Google App Engine - 检索实体 - 503 服务不可用(上传有效)

python - 写入索引时呼啸锁定语句

postgresql - 对复杂jsonb内容进行全文检索

java - 使用 Socket 通过 GAE Java 从 Gmail 发送电子邮件

java - Cloud Endpoints Portal 的身份验证问题

regex - 以任意顺序查找文本中彼此接近的一组单词

java - 如何从 Google Datastore(Java 中)删除特定记录?

google-app-engine - 任务队列完成回调

java - DatastoreRepository 能够保存对象,但所有 find 方法都会抛出空指针异常