当前位置: 首页 > 面试题库 >

在Elasticsearch中建模父/子关系(产品/产品变体)

倪振海
2023-03-14
问题内容

在使用ES(或Solr)对产品变量进行建模时,我的头脑破了

考虑(人为的例子):

  • 不同的产品(例如T恤)
  • 每个产品都有一组属性(产品编号,名称,描述,品牌,颜色,受欢迎程度)
  • 每个产品都有一组具有属性(productvariantid(productid ++ size的组合),productid,大小,可用性,价格的productvariant)

这似乎是产品与产品变体之间的标准父/子关系。因此,我想在ES中进行建模。

我希望能够执行以下操作:

  • A.查询产品变量(并返回所有属性)。无需返回product-properties,productvariant属性就足够了。

  • B.限制每个用户查询,以便每个产品最多匹配1个productvariant匹配项(在上面的示例中,这意味着我们限制了productvariant.size)

  • C.价格过滤。

  • D.筛选产品的某些属性

  • E.价格订购

  • F.订购产品的属性,例如受欢迎程度,或两者的结合。

  • G.关于productvariant.price的方面

  • H.产品(父级)的多种属性方面

可以使用父/子文档以及has_parent在ES: AE + G 中执行此操作。

但是, FH
呢?我已经研究_scope过方面(虽然我承认我并没有100%抓住可能性)和所有其他想到的东西,但是我没有看到一个明显的解决方案来显示方面的产品属性和能力与一起排序has_parent

我已经尝试了其他方法(在纸上)-has_child->运气不佳,需要返回变量信息-
嵌入式文档(产品内部变量)并返回具有所有变量的整个产品。感觉笨拙。此外,我很确定我不能以这种方式分面/订购价格。

帮助非常感谢


问题答案:

我长时间地用力撞墙,试图使类似的方案起作用。我的计划是产品/供应商关系(多个供应商出售的单个产品,描述/价格/可用性可能不同)。

ES中的Parent-> Child映射现在还不是很健壮或易于使用。即使工作正常,您也会很快遇到边缘情况,这实际上是不可能的,因为ES不支持它。

我认为您最好的选择是自行管理parent->
child映射,并将文档存储在它们自己的索引中。产品具有一个ID,然后将其作为Product_ID存储在ProductVariant文档中。无论如何,这实际上是ES如何在内部存储父子关系的方式。

在实践中,您查询“顶级”索引(产品),然后使用Product_ID字段中的过滤器对ProductVariant的索引执行第二次查询。

维护起来比较麻烦,但灵活性更高。至少直到ES变得更好的“父级->子级”功能为止



 类似资料:
  • 使用ES(或Solr)建模productvariants让我大吃一惊 考虑(人为的例子): 不同的产品(如T恤) 每个产品都有一组属性(productid、名称、desc、品牌、颜色、知名度) 每个产品都有一组具有属性的productvariants(productvariantid(productid++大小的组合)、productid、大小、可用性、价格) 这似乎是product和Produc

  • 我试图以编程方式为一个可变产品添加两个产品变体。基于此回答线程,我使用以下缩短的函数: 我使用以下数据数组: 然后我运行以下函数: 其中,是我要对其进行更改的变量产品的id,是上面定义的数据数组。 我的问题是函数只插入foreach in函数中的最后一个数据。 i、 e.在商业中的产品变化有: 红色W1 红色W1 但我想: 蓝色W1 红色W1

  • 我有以下实体框架的数据模型。 我有一个抽象的产品。每种产品都与一类产品相关。例如: 还有具体的产品: 我有分层类别,例如: 每个类别都有

  • 我已经为Woocommerce开发了定制的单一产品模板,这些模板可以正常工作并符合预期。问题是,现在客户想要销售的产品有一些不同的变体,而我不知道如何添加此功能。 目前在产品页面上,我使用了the_post_thumbail()和get_post_meta()等函数来显示产品的各种信息,如价格和在产品帖子类型中输入的摘录。然后我使用do_action(woocommerce_simple_add_

  • 我正在与woocommerce建立电子商务网站。我在父类别下划分了子类别。我上传每个子类别的产品,不仅选择子类别,还选择父类别。但是,当我单击父类别时,我看不到任何产品。我只能在子类别中看到。例如,我有“手表”

  • 我试图使用WC_产品类在WooCommerce中创建变量产品。我们成功创建了一个简单的产品,但无法创建具有以下代码的可变产品: 这段代码正在WooCommerce中创建简单的产品。我们需要创建一个具有选项和变化的可变产品。