使用数据存储区(NDB),搜索API或两者来查看数据视图?

kvd*_*vdb 5 google-app-engine full-text-search app-engine-ndb google-cloud-datastore

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

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

我想使用全文搜索并同时在多个字段上放置过滤器,那么我应该将数据保存在数据存储区中并将数据部分复制到Search API的文档中吗?或者,如搜索示例所示,完全跳过数据存储区.

小智 6

我不太确定推荐的方法是什么,但是Search API似乎主要用作附加的手动管理索引.在大多数情况下,将所有数据存储在Search API中并不理想,因为您可以轻松地使用您永远不需要过滤或搜索的字段来消除搜索API索引的大小,也不会将其设计为在需要定期写入的情况.

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