繁体   English   中英

Searchkick聚合或

[英]Searchkick Aggregation OR

我正在使用Searchkick搜索产品。 效果很好,但现在我要添加过滤器。 由于产品的性质,我一直希望为所选过滤器显示产品,而不是使用AND,因此始终需要使用OR。

我正在建立像这样的搜索:

    Product.search(
          "shower",
          fields: [:name]
          where: {showers_ids: [46,41], accessories_ids: [104, 102]},
          aggs: [: showers_ids, : accessories_ids, : bath_ids]
    )

这是在尝试查询:

其中IN(46或41)和(104或102)

因为产品永远只属于一个类别,所以这将永远不会带回任何产品。 但我想展示所有类别的产品,因此需要像这样:

其中IN(46或41)或(104或102)

使用where子句中的or_参数,应该可以实现所需的结果。 Searchkick文档中有一个示例,但是对于您的特定情况,以下应该起作用:

Product.search(
  "shower",
  fields: [:name],
  aggs:   [:showers_ids, :accessories_ids, :bath_ids],
  where:  {
            _or: [
                   {showers_ids:     [46, 41]},
                   {accessories_ids: [104, 102]}
                 ]
          }
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM