Searchk`all`使用OR来查找多个数组

时间:2018-11-09 07:14:54

标签: ruby-on-rails elasticsearch searchkick

我需要使用searchkick构建一个布尔查询,该查询将检查多个数组,并且如果数组的所有元素都存在,则条件必须为true。

我想要包含["2019-11-05", "2019-11-06", "2019-11-07"]来自一个数组的所有日期的记录来自第二个数组["2019-11-08", "2019-11-09", "2019-11-10"]

的记录

它非常适合这样的一个数组。

available_on: { all: ["2019-11-05", "2019-11-06", "2019-11-07"] }

我需要这样的东西

available_on: { or: { all: ["2019-11-05", "2019-11-06", "2019-11-07"] , all: ["2019-11-08", "2019-11-09", "2019-11-10"]} }
  

我们如何创建查询available_on = A或B

  1. A,B是数组,我们需要匹配数组的所有元素
  2. available_on是目标词(也是索引中的数组)

2 个答案:

答案 0 :(得分:1)

您是否尝试在'where'子句中使用它?

_or: [{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}}, {available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}} ]}

答案 1 :(得分:1)

您应将whereor过滤器一起使用,如下所示:

where {or: [[{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}},
             {available_on: {all: ["2019-11-08", "2019-11-09", "2019-11-10"]}}]]}

或使用_or过滤器:

where {_or: [{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}},
              available_on: {all: ["2019-11-08", "2019-11-09", "2019-11-10"]}]}

_oror之间的结果没有区别,只是语法略有不同(or使用一对双方括号)