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字符串)非常感谢!
你需要的是一个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)
有关更多信息和上下文,请参阅轮胎文档的这一部分.