或使用Tire/Elastic进行查询

bob*_*eno 1 ruby-on-rails-3 elasticsearch tire

这可能很简单,但我无法解决.我在Project类上有这个轮胎/ elasicsearch查询:

  def self.search(params)
    tire.search(load: true, page: params[:page], per_page: 8) do
      query do
        boolean do
          must { string params[:query], default_operator: "AND" } if params[:query].present?
          must { term :status, "posted" }
          must { term :budget, params[:budget] } if params[:budget].present?
        end
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

我需要状态术语搜索'已发布'或'已关闭'并且无法解决此问题.我试过term:status,["posted","closed"]但是这不会返回结果所以可能正在执行AND.感谢这里正确的轮胎语法.(注意不要在这里寻找jason/elasticsearch字符串)非常感谢!

kar*_*rmi 5

你需要的是一个terms查询,它OR在作为数组传递的术语之间执行:

must { terms :status, ["posted"] }
Run Code Online (Sandbox Code Playgroud)

或类似的动态值:

# params[:status] can be single value or array
must { terms :status, Array(params[:status]) }
Run Code Online (Sandbox Code Playgroud)

有关更多信息和上下文,请参阅轮胎文档的这一部分.