按用户在Elasticsearch中过滤产品索引

时间:2019-01-22 22:05:29

标签: elasticsearch elasticsearch-6

我有一个产品索引。它们具有ID,名称,品牌等常规字段。查询此索引非常有效,但是我想限制为特定用户返回的产品。

说我有5个ID介于1-5之间的产品

Id: 1, name: “Product One”, brand: “Fake Brand”
Id: 2, name: “Product Two”, brand: “Fake Brand”
Id: 3, name: “Product Three”, brand: “Fake Brand”
Id: 4, name: “Product Four”, brand: “Fake Brand”
Id: 5, name: “Product Five”, brand: “Fake Brand”

如果没有过滤器,并且我搜索品牌:“假品牌”,则会得到5条结果。

但是我想添加此功能:说我有两个用户。用户1仅能“看到”产品ID 1、2和5。用户2仅能“看到”另一个子集,例如产品ID 1、2、4和5。

因此,如果用户1搜索品牌:“假品牌”,则他只会获得ID为1、2和5的产品。就好像用户2搜索品牌:“假品牌”时,他​​只会获得ID为1的产品。 ID 1、2、4和5。

是否可以在此产品查询中添加“用户ID”,然后在其他地方存储用户可以看到哪些产品?

在SQL中,我可能会有一个不同的表来存储每个用户可以看到的产品,然后进行联接。但是使用ES我想我要么必须拥有两个单独的索引,要么要使用嵌套查询或has_child / has_parent查询,但我不确定如何实现它。

0 个答案:

没有答案