【发布时间】:2018-03-11 06:56:42
【问题描述】:
我有一个 products 的索引是 Solr。我需要为每个客户提供一个定制的产品列表,这样我就必须为每个客户排除一些特定的产品。 目前,我将客户和排除产品的这种关系存储在 SQL 数据库中,然后使用术语查询在 Solr 中过滤它们。有没有办法可以将这种关系存储在 Solr 本身中,这样我就不必每次都先从 SQL 计算排除列表。
与我们在 elasticsearch 中使用 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html 可以做的事情非常相似
我能想到的在 Solr 中做的可能方式:
在产品索引本身中保留客户列表,并对其进行过滤。但是,如果我必须重新索引所有文档,这真的会很痛苦。列表也可能很大。
我能想到的另一种方法是维护一个单独的核心来保存每个客户的文档并排除 product_id 并使用 {!join} 执行连接以过滤掉客户的产品。它是一个可扩展的解决方案吗?
在 Solr 中存储此类数据的理想方法应该是什么。
【问题讨论】:
标签: elasticsearch solr lucene elastic-stack solrcloud