elasticsearch:使用内部点击对父文档进行排序

vwkv1x7d  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(0)|浏览(242)

我想使用排序后的内部点击对父文档进行排序。但我做不到。我有以下文件结构。文档表示具有嵌套变体的电子商务产品。

{
  "id": "iphone11",
  "variants": [
    {
      "id": "iphone11_64_blue",
      "offers": "offers", // means it has some offer
      "stock": 1, // 0 means out of stock, 1 means in stock
      "price": 100000
    }
  ]
}

现在,我想要的是根据库存(优先考虑库存)对每个产品的变体进行排序,如果是平手,则按价格/报价/启动日期(由用户选择)对它们进行排序。所以对于嵌套变量,一个排序标准是固定的,即股票价值,另一个由最终用户决定。然后我需要根据每个产品文档的第一个选择的变体对产品进行排序。
总而言之,我选择了每个产品的一个变体,这是对内部点击进行排序后的第一个变体,我想根据每个产品的第一个变体对产品进行排序,排序标准将根据用户的选择(价格/优惠/启动日期)。因此,如果一个产品有一个报价,尽管它的所有变体都已脱销,但它仍然会首先出现。
注意:我不想根据库存对产品进行分类,这完全取决于所选的第一个变体,市长可能没有库存。
我尝试指定多个排序字段(stock后跟用户选择的排序条件),但是es所做的是,它在嵌套的变量上独立地运行它们。如果我有这样的产品:
iPhone 11
变体1->库存
变体2->缺货+报价
iPhone 12
变体1->缺货
变体2->缺货+报价
它将优先考虑iphone11,但iphone12需要首先显示理想的,因为第一个选择的变种为iphone12根据排序内部点击是变种2提供。es在排序产品时所做的是,对于第一个排序字段(stock),它将优先考虑iphone11,而第二个排序没有意义,因为没有领带。
ps:我能够使用多个排序字段(stock字段后跟用户选择的排序字段)对内部点击进行正确排序

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题