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

使用Tire的Elasticsearch查询
EN

Stack Overflow用户
提问于 2013-02-20 01:47:19
回答 1查看 1.3K关注 0票数 2

我有这个要求:

代码语言:javascript
复制
curl -XGET localhost:9200/users/_search -d '
{
  "query": {
    "filtered": {
      "query": {"match_all": {}},
      "filter": {
        "nested": {
          "path": "apps_events",
          "query":{
            "filtered": {
              "query": { "match_all": {}},
              "filter": {
                "and": [
                  {"term": {"apps_events.status": "active"}},
                  {"terms": {"apps_events.type": ["sale"]}}
                ]
              }
            }
          }
        }
      }
    }
  }
}'

我没有成功地将它转换成Tire (rails gem)语言。我在轮胎测试中没有发现任何嵌套过滤器的例子...

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-05 22:59:14

好的,我找到了答案:

代码语言:javascript
复制
nested_filter = Tire::Search::Query.new do
  filtered do
    query { all }
    filter :term,  { 'apps_events.status' => 'active' }
    filter :terms, { 'apps_events.type'   => ['sale'] }
  end
end

tire.search(page: params[:page], per_page: params[:per_page], load: params[:load]) do
  query do
    filtered do
      query { all }
      # Merge the defined filter as a hash into the `nested` filter
      filter :nested, { path: 'apps_events'}.merge({ query: nested_filter.to_hash })
    end
  end
end

感谢@karmiq https://github.com/karmi/tire/issues/660

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

https://stackoverflow.com/questions/14964052

复制
相关文章

相似问题

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