【发布时间】:2012-12-21 04:46:43
【问题描述】:
在使用 ES(或 Solr)建模产品变体时让我头疼
考虑(人为的例子):
- 不同的产品(比如 T 恤)
- 每个产品都有一组属性(productid、name、desc、brand、color、popularity)
- 每个产品都有一组具有属性(productvariantid(productid++size 的组合)、productid、size、availability、price)的productvariant
这似乎是产品和产品变体之间的标准父/子关系。所以我想在 ES 中这样建模。
我希望能够做到以下几点:
A.查询产品变量(并返回所有属性)。不需要返回product-properties,productvariant属性就够了。
B.每个用户查询都受到限制,因此每个产品最多匹配 1 个 productvariant(在上面的示例中,这意味着我们限制 productvariant.size)
C.按价格过滤。
D.过滤产品的某些属性
E.按价格下单
F.按产品属性排序,例如受欢迎程度,或两者的组合。
G. productvariant.price 的方面
H.产品(父)的多个属性方面
对父/子文档和 ES 中的 has_parent 执行此操作:A-E + G 是可能的。
但是,F 和 H 怎么样?我已经研究了 _scope 的方面(尽管我承认我没有 100% 了解可能性)和所有其他想到的东西,但我没有看到一个明显的解决方案来显示产品属性的方面并能够与 has_parent 一起按它们进行排序。
我尝试过其他的东西(在纸上) - has_child -> 没有运气需要返回变体信息 - 嵌入式文档(产品内部的变体)并返回具有所有变体的整个产品。只是感觉很笨拙。此外,我很确定我不能以这种方式考虑/订购价格。
帮助非常感谢
【问题讨论】:
标签: elasticsearch