将 GAE 搜索 API 与 Datatstore 集成

Integrating GAE Search API with Datatstore

当文档同时存储在云数据存储和搜索索引中时,是否可以从搜索索引查询,而不是 returning 搜索索引文档,returning 每个来自云数据存储的相应实体?换句话说,我基本上希望我的搜索查询 return 数据存储查询 return.

更多背景:当我在数据存储中创建实体时,我传递了实体 ID、名称和描述参数。构建一个搜索文档,使其文档 ID 与相应的实体 ID 相同。目标是创建一个前端搜索实现,利用全文搜索 api 根据文本查询检索所有相关文档。但是,我想 return 存储在数据存储实体中的该文档的所有详细信息。

执行此操作的唯一方法是为查询中的每个 doc_id return 搜索创建一个键,然后使用 get_multi(keys) 检索所有相关的数据存储实体吗?

没有第一个 class 支持,最好的办法是使文档 ID 与数据存储键匹配,并通过单个 DAO/repository 层将所有 put/get/search 请求路由到确保一定程度的一致性。

您可以使用并行异步写入来降低延迟,但对于不参与事务的搜索,您无能为力。它也没有定义的一致性,所以假设它是最终的,并且可能比数据存储索引传播慢得多。

除了文本内容外,您还可以在搜索 API 文档中存储所需的任何信息。

这将允许您在一次调用中检索所有数据,但可能会在搜索 API 文档和数据存储区实体中存储一些重复信息。显然,拥有重复数据并不理想,但对于很少更改的数据(例如文档时间戳、作者 ID、标题等)来说,它可能是一个不错的选择,因为它可以显着提高性能。