大家好,我正在处理一个后端数据库作为PostgreSQL服务器的Django项目。我选择了弹性搜索
作为我项目的搜索引擎。
我使用弹性搜索-dsl-py
创建Django模型和弹性搜索
文档类型之间的映射。并使用Django信号
捕获更新
和删除
事件。
顺便说一句,我还没有将Django模型中的所有字段映射到弹性搜索。
当用户搜索到他/她从弹性搜索服务器获得一个项目到主页的列表时。当用户点击项目列表时。我应该在哪里查询项目的详细数据,在elastic_search服务器
或在Postgres服务器
如果我把每个对象的所有细节都放在弹性服务器中,这对我来说将是一个痛苦,因为Django模型中存在嵌套关系。
如果我没有将所有详细信息放在弹性搜索服务器中,我需要查询数据库,以获取与弹性搜索查询相比会很慢的项目的详细信息。
我应该走哪条路?
在弹性搜索服务器中索引所有属性以及嵌套关系,并对弹性搜索进行所有查询操作。
或
在弹性搜索服务器中仅索引必要的字段,对于详细信息视图,使用所需的字段id对数据库进行q查询。
以前有人有这种经历吗?
这个决定实际上取决于你试图用弹性搜索来解决什么问题。最近我参与了一个使用弹性搜索的项目。原因是为了加快搜索速度并提供更好的搜索结果。然而,所选产品的详细信息是从数据库(mssql)中查询的。映射所有或少数字段的决定取决于你想要从弹性搜索中得到什么。如果是为了更好的搜索结果(结果速度),那么我建议你只映射那些有助于用户搜索的字段。