Searchkick-2个单独列上的范围

时间:2019-02-06 22:33:36

标签: ruby-on-rails elasticsearch searchkick

我正在尝试创建2列的多个范围。我知道可以实现多个范围,但我需要它可以处理2列。

在我的模型中,我有一个min_agemax_age。用户可以选择多个年龄进行过滤,例如:选项为 10,11,12,13,14,15,16,17,18 ,用户选择11、13和16。如何从所选选项中过滤模型?

此外,我想我需要将选定的选项更改为一个范围,以使上面的内容变为10-11、12-13和15-16,以便可以使用gt和{ {1}}参数。但是,也许范围过滤器对此不起作用?

编辑

在SQL中,我可以执行以下操作,该操作返回我希望看到的内容,因此我只需要通过Searchkick将其转换为elasticsearch语法。

lt

1 个答案:

答案 0 :(得分:1)

在不研究范围是否是应用程序逻辑的最佳选择的情况下,要获得与SQL等效的效果,可以使用以下内容:

Event.search(
  "*",
  where:  {
            _or: [
                   {min_age: {lte: 11}, max_age: {gte: 11)},
                   {min_age: {lte: 13}, max_age: {gte: 13)},
                   {min_age: {lte: 16}, max_age: {gte: 16)}
                 ]
          }
)