这可能很简单,但我无法解决。我在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
我需要将状态字词搜索为“已发布”或“已关闭”,并且无法解决此问题。我试过term:status,[“posted”,“closed”]但是这不会返回结果所以可能正在执行AND。 感谢这里正确的轮胎语法。 (注意不要在这里寻找jason / elasticsearch字符串) 非常感谢!
答案 0 :(得分:5)
您需要的是terms
查询,它在作为数组传递的术语之间执行OR
:
must { terms :status, ["posted"] }
或类似的动态值:
# params[:status] can be single value or array
must { terms :status, Array(params[:status]) }
有关详细信息和背景信息,请参阅this part of Tire documentation。