2017-10-13 92 views
0

我们有一个ES指数持有不同的产品给予分数。我们要做的是汇总产品名称,然后获得每个产品名称“桶”的平均分数。目前,默认的汇总功能只能为我们提供每个存储桶的计数 - 是否有可能将此延伸为给我们每个产品名称的平均分数?Elasticsearch 5(Searchkick)聚集桶平均值

我们已经看了管线的聚合,但文件是相当密集,似乎并不完全匹配我们正在试图做的。

这里我们已经有了:

{ 
    "aggs"=>{ 
    "prods"=>{ 
     "terms"=>{ 
     "field"=>"product_name" 
     }, 
     "aggs"=>{ 
      "avgscore"=>{ 
      "avg"=>{ 
       "field"=>"score" 
       } 
      } 
     } 
     } 
    } 
    } 

要么这是错误的,或者会不会是有什么东西在searckick如何编译是摔东西其ES查询?

谢谢!

+0

可以请你告诉您查询您所到目前为止已经试过 – pravindot17

回答

0

认为这是你想要的管道汇聚...

POST /_search 
{ 
    "size": 0, 
    "aggs": { 
    "product_count" : { 
     "terms" : { 
     "field" : "product" 
     }, 
     "aggs": { 
      "total_score": { 
      "sum": { 
      "field": "score" 
      } 
     } 
     } 
    }, 
    "avg_score": { 
     "avg_bucket": { 
     "buckets_path": "product_count>total_score" 
     } 
    } 
    } 
} 

希望我有一个圆形的正确的方式,如果不是 - 切换前两个桶。