2017-10-13 65 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" 
     } 
    } 
    } 
} 

希望我有一個圓形的正確的方式,如果不是 - 切換前兩個桶。