将GAE Search API与Datatstore集成

时间:2016-11-25 21:27:53

标签: python google-app-engine google-cloud-datastore google-search-api

当文档存储到Cloud数据存储区和搜索索引中时,是否可以从搜索索引查询而不是返回搜索索引文档,而是从云数据存储区返回每个相应的实体?换句话说,我基本上希望我的搜索查询返回数据存储区查询将返回的内容。

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

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

2 个答案:

答案 0 :(得分:1)

没有一流的支持,最好的办法是使文档ID与数据存储区匹配,并通过单个DAO /存储库层路由所有put / get /搜索请求,以确保一定程度的一致性。

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

答案 1 :(得分:0)

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

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