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

如何使用searchkick通过逻辑操作进行复杂查询

孟豪
2023-03-14
问题内容

Iam使用 searchkick 库作为 Elasticsearch 客户进行产品搜索。
https://github.com/ankane/searchkick

可以创建“ OR”条件和“ AND”条件;

AND操作 Product.search,其中:{价格:{lte:200},in_stock:true}

或操作 Product.search,其中:{或:[[{{in_stock:true},{backordered:true}]]}}

但是Iam坚持使用searchkick 创建 多个“ AND”“ OR” 条件。

我需要类似的东西

A OR B OR(C和D)

或者我需要这样,

A AND B AND(C OR D)

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

谢谢


问题答案:

A OR B OR(C和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或B)和(C或D)

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


 类似资料:
  • 如何执行查询?示例: 给出字段为或的所有文档 提供所有文档,其中或字段

  • 编辑-上下文:我正在使用Talend ETL工具,并在查询中使用ISODate或Date或new Date,如以下错误导致失败,因此我需要解决方法: 如果没有以下错误,我无法做到这一点: 大概是因为ETL工具调用: 考虑到我无法在com的查询中使用新日期()。mongodb。util。JSON。parse()方法,是否有解决方法? 我正在使用MongoDB v2.6.3,无法让$date运算符工作

  • C++中有三种逻辑操作符:与,或,取反,分别用符号&&,||和!表示。这些操作符的语义与它们的字面意思类似。例如 x > 0 && x < 10 为真,当且仅当x大于0且小于10的时候成立。 evenFlag || n%3 == 0,当两个条件中的任一个为真时,表达式为真,即evenFlag为真或n可以被3整除时。 取反操作符的作用是为布尔表达式求反, !evenFlag这个表达式当evenFl

  • 我怎么能在最后运行一些逻辑,而不是收集。 我可以像 我如何在过滤后运行最后的逻辑。 谢谢,拉维

  • 问题内容: 我正在尝试使用Python检查回文。我拥有的代码是非常for循环的。 在我看来,当人们从C转到Python时,最大的错误就是尝试使用Python实现C逻辑,这使事情运行缓慢,并且只是没有充分利用该语言。 我在这个网站上看到了。搜索“ C-style for”,即Python没有C-style for循环。可能已经过时,但是我将其解释为意味着Python具有自己的方法。 我尝试环顾四周,

  • 问题内容: 我有一个基本的Django模型,例如: 我需要对上述模型执行复杂的查询,例如: 我已经尝试过以下使用法式饼的运气: 在梅花类的Meta类中,我将过滤设置为: 关于如何解决这个问题有什么想法吗? 问题答案: 你走在正确的轨道上。但是,应该将资源查找转换为ORM查找。 默认实现将查询关键字基于,值对进行拆分,然后尝试查找所查找资源与其等效ORM之间的映射。 你的代码不应仅在此处构建过滤器。