首页 > 解决方案 > 如何在执行 ElasticSearch 查询之前预先过滤数据?

问题描述

我将同时使用 MsSqlServer 和 Elastic。MSSQL 是主数据库,Elastic 是搜索数据库。我的 db 结构如下所示:

我将为产品和公司表创建弹性索引以提高搜索速度。companyId = X 的登录用户可以看到 companyid = X 的所有产品,或Company_matrix中定义的母公司的所有产品,或Company_share_data中其他公司共享的所有产品,但 allow_to_be_shared 不等于 false。

这个查询在 SQL server 中非常简单,但在像 elasticsearch 这样的 nosql db 中很痛苦。有没有办法在sqlserver中搜索“可用产品id”列表,然后将其传递给elasticsearch并与用户的搜索条件混合?还是有更好的主意?

谢谢

标签: elasticsearch

解决方案


如果我正确理解您希望根据某些标准查看 Elasticsearch 中的所有文档。如果是这种情况,您可以在 Elasticsearch中使用BoolQuery 。

如果这对您来说很痛苦,那么另一种方法是从您的 SQLQuery 中获取产品 Id 列表,并将 Id 使用(传递)到Elasticsearch 中的术语查询中。

希望这会有所帮助。


推荐阅读