如何在association_id为零或某个值的情况下编写轮询查询?

时间:2013-05-04 19:12:39

标签: ruby elasticsearch tire

我有一个属于帐号的课程模型。

公共课程有一个零账号。

私人课程在account_id中有值。

如何为公共和私人课程中的某些搜索字词编写课程搜索?

LessonContentBlock.search(
  :load => true, 
  :page => (params[:page] || 1)
  ) do
  query do
    boolean do
      should { string q }
      filter :missing => { :field => 'account_id' }
      should { string "account_id:#{a.id}" }
    end
  end
end

我也试过这个:

LessonContentBlock.search(
  :load => true, 
  :page => (params[:page] || 1)
  ) do
  query { string q }
  filter :missing, :field => 'account_id'
  filter :term, :account_id => a.id
end

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,那么你想做这样的事情:

LessonContentBlock.search(
    :load => true, 
    :page => (params[:page] || 1)
    ) do
  query { string q }
  filter :or, {:term => {:account_id => a.id}},
              {:missing => {:field => 'account_id'}}
end

我以为我知道如何解决这个问题,但我自己努力工作。最终在Tire的测试套件中找到了一个很好的例子:http://git.io/v0PGBw