使用保存为块的查询时,如何使用minimum_number_should_match创建bool查询

时间:2012-03-23 22:21:10

标签: ruby-on-rails elasticsearch tire

我正在使用带有elasticsearch的轮胎,我很难说如何使用minimum_number_should_match选项创建一个布尔查询,同时还将一组存储在块中的查询抛出。

所以,我有

options = {:minimum_number_should_match => 1}
s = Tire.search 'variations' do |search|
      search.query do |query|
        query.boolean options, &keyword_query(params[:keyword]) unless params[:keyword].blank?
      end
    end

def keyword_query(keyword)
    lambda do |boolean|
      boolean.should { string "name:*#{keyword}*"}
      boolean.should { string "number:*#{keyword}*"}
      boolean.should { string "nrf:*#{keyword}*"}
      boolean.should { string "base_color:*#{keyword}*"}
      boolean.should { string "skus:*#{keyword}*"}
      boolean.should { string "color_name:*#{keyword}*"}
    end
  end`

但该选项未添加到ElasticSearch的最终查询请求中。 keyword_query返回一个lambda。还有另一种方法可以将选项添加到此布尔查询中吗?

1 个答案:

答案 0 :(得分:0)

想出来 - 截至目前,轮胎只在第一次调用布尔值时向布尔请求添加选项。我在上面列出的那个之前有一堆其他的布尔查询,所以我的选择被放到了以太。