【问题标题】:How to do complex querying with logical operations by using searchkick如何使用 searchkick 进行复杂的逻辑操作查询
【发布时间】:2015-03-06 04:43:58
【问题描述】:

我正在使用 searchkick 库作为产品搜索的弹性搜索客户端。 https://github.com/ankane/searchkick

可以创建'OR'条件和'AND'条件;

AND 运算 Product.search where: {price: {lte: 200}, in_stock: true}

或运算 Product.search where: {or: [[{in_stock: true}, {backordered: true}]]}

但我坚持使用 searchkick 创建 多个 'AND' 'OR' 条件。

我需要类似的东西

A OR B OR (C AND D)

或者我需要这样,

A AND B AND (C OR D)

请指导我,如何实现这一目标

谢谢

【问题讨论】:

  • 得到答案 A OR B OR (C AND D) Product.search where: {or: [[{brand: 'nike'}, {in-stock: true}, {price: { lte: 12}, color: 'red'}]]} A AND B AND (C OR D) Product.search where: {brand: 'nike', in-stock: true, or: [ [{price: {lte : 12}}, {color: 'red'}] ]}
  • 你应该回答你自己的问题。这样,您可以通过突出显示答案并表明该问题已解决来帮助社区。你也会得到积分;)

标签: ruby-on-rails ruby elasticsearch logical-operators searchkick


【解决方案1】:

A OR B OR (C AND D)

Product.search where: {or: [[{brand: 'nike'}, {in-stock: true}, {price: {lte: 12}, color: 'red'}]]} 

A AND B AND (C OR D)

Product.search where: {brand: 'nike', in-stock: true, or: [ [{price: {lte: 12}}, {color: 'red'}] ]}

更新

(A OR B) AND (C OR D)

 Product.search where: {or: [[ {or: [[{brand: "nike"}, {in-stock: "true"}]]}], [{or: [[{price: 100}, {color: "red"}]]}]]}

【讨论】:

  • 为什么地狱或条件有方括号,我花了很多时间弄清楚它有方括号。谢谢
  • 谢谢迪亚斯。你知道怎么做 (A OR B) AND (C OR D)
  • 应该在官方文档中。救生员
猜你喜欢
  • 2020-01-05
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多