在Tire上使用带有OR的布尔过滤器

时间:2014-08-08 22:23:07

标签: ruby-on-rails ruby elasticsearch tire

我在我的Rails应用程序上使用Tire,但缺少文档确实让我感到沮丧。我知道宝石是" ReTire"但我需要使用他,直到我换到其他宝石。

我在过滤器上遇到了像这个简单查询一样的问题

SELECT product FROM products WHERE (price = 20 OR productID = "XHDK-A-1293-#fJ3") AND (price = 30)

我已经在弹性搜索字符串查询中完成了它:

GET /my_store/products/_search
{
 "query" : {
   "filtered" : { 
     "filter" : {
      "bool" : {
        "should" : [
          { "term" : {"price" : 20}}, 
          { "term" : {"productID" : "XHDK-A-1293-#fJ3"}} 
        ],
        "must" : {
          "term" : {"price" : 30} 
        }
      }
    }
  }
 }
}

它简单而有效!但我不知道如何在轮胎结构上做到这一点。我已经尝试了很多解决方案,但都没有。

我需要一条解决方案的途径。

1 个答案:

答案 0 :(得分:0)

你有没有尝试过以下任何机会?

Tire.search 'products' do
  query do
    boolean do
      should   { string 'price:20' }
      should   { string 'productID:XHDK-A-1293-#fJ3' }
      must { string 'price:30' }
    end
  end
end