繁体   English   中英

Elasticsearch嵌套查询聚合

[英]Elasticsearch nested query aggregations

现在我做对了,您能建议我改善性能吗?

我正在尝试在我的Ruby on Rails应用程序中实现聚合过滤器(无关紧要)。 我正在使用以下条件查询elasticsearch。

我需要的是使用某些条件过滤文档,也通过嵌套文档条件过滤它们。 我不需要任何排名或评分/排序。 我只需要在crawl_page_id下聚合这样的查询。

任何帮助都非常感谢。

这是索引的映射:

{:created_at=>{:type=>"date"}, 
 :updated_at=>{:type=>"date"}, 
 :domain_id=>{:type=>"integer"}, 
 :users=>{:type=>"integer"}, 
 :new_users=>{:type=>"integer"}, 
 :sessions=>{:type=>"integer"}, 
 :pageviews=>{:type=>"integer"}, 
 :session_duration=>{:type=>"integer"}, 
 :bounces=>{:type=>"integer"}, 
 :exits=>{:type=>"integer"}, 
 :conversion_rate=>{:type=>"integer"}, 
 :goals=>{:type=>"integer"}, 
 :assists=>{:type=>"integer"}, 
 :unique_referrers=>{:type=>"integer"}, 
 :by_traffic_source=>{:type=>"nested", 
   :properties=>{
      :source=>{:type=>"string", :index=>:not_analyzed}, 
      :goals=>{:type=>"integer"}, 
      :pageviews=>{:type=>"integer"}, 
      :assists=>{:type=>"integer"}}}, 
  :by_goals=>{:type=>"nested", 
    :properties=>{
      :id=>{:type=>"integer"}, 
      :goals=>{:type=>"integer"}, 
      :assists=>{:type=>"integer"}}}, 
  :url=>{:type=>"string"}, 
  :timestamp=>{:type=>"date"}, 
  :rdn_url=>{:type=>"string"}, 
  :scheme=>{:type=>"string"}, 
  :host=>{:type=>"string"}, 
  :port=>{:type=>"integer"}, 
  :path=>{:type=>"string"}, 
  :query_string=>{:type=>"string"}, 
  :crawl_page_id=>{:type=>"string"}
}
}

这对我有用。 有没有更好的方法(明智)执行这样的查询?

   {"query"=>
          {"filtered"=>
            {"query"=>{{"match_all"=>{}},
             "filter"=>{
               "bool"=>{
                 "must"=>[
                    {"term"=>{"domain_id"=>7721}}, 
                    {"range"=>{"goals"=>{"gte"=>0}}}
                    "nested"=>{"path"=>"by_traffic_source", 
                        "filter"=>{
                          {"term"=>{"by_traffic_source.source"=>"organic"}}
                        }
                      }
                    }
                  ]},

               }
              }
            },
         "aggs"=>{"crawl_pages"=>{"terms"=>{"field"=>"crawl_page_id", "size"=>200}}}}

没关系,您可能没有比这更好的了。

 {"query"=>
          {"filtered"=>
            {"query"=>{{"match_all"=>{}},
             "filter"=>{
               "bool"=>{
                 "must"=>[
                    {"term"=>{"domain_id"=>7721}}, 
                    {"range"=>{"goals"=>{"gte"=>0}}}
                    "nested"=>{"path"=>"by_traffic_source", 
                        "filter"=>{
                          {"term"=>{"by_traffic_source.source"=>"organic"}}
                        }
                      }
                    }
                  ]},

               }
              }
            },
         "aggs"=>{"crawl_pages"=>{"terms"=>{"field"=>"crawl_page_id", "size"=>200}}}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM