首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >或使用Tire / Elastic查询

或使用Tire / Elastic查询
EN

Stack Overflow用户
提问于 2012-07-23 22:57:02
回答 1查看 971关注 0票数 1

这可能很简单,但我做不出来。我在Project类上有这个轮胎/elasicsearch查询:

代码语言:javascript
复制
  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

我需要状态项在“posted”或“closed”上进行搜索,但无法解决此问题。我尝试了term :status,"posted","closed“,但没有返回结果,所以可能是在做AND操作。感谢这里正确的轮胎语法。(注意这里不寻找jason/elasticsearch字符串)非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 18:00:07

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

代码语言:javascript
复制
must { terms :status, ["posted"] }

或者像下面这样的动态值:

代码语言:javascript
复制
# params[:status] can be single value or array
must { terms :status, Array(params[:status]) }

有关更多信息和上下文,请参阅this part of Tire documentation

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11615093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档