2017-07-18 58 views
0

我有一個查詢,我正在通過智能手機分組,然後由運營商進行分組。在這些嵌套聚合內部,我想找到該特定智能手機的每個運營商的平均價格,評級和速度。這是我當前的查詢:獲取多個平均聚合

{ 
    "aggs": { 
    "group_by_smartphone": { 
     "terms": { 
     "field": "smartphone" 
     }, 
     "aggs": { 
     "group_by_carrier": { 
      "terms": { 
      "field": "carrier" 
      }, 
      "aggs": { 
      "group_by_avg_price": { 
       "avg": { 
       "field": "price" 
       } 
      } 
      }, 

      "group_by_rating":{ 
       "avg":{ 
       "field": "rating" 
       } 
      } 

     } 
     } 
    } 
    } 
} 

按照目前的查詢,我得到一個錯誤說:

「類型」:「parsing_exception」, 「理由」:「發現了兩個聚合類型[group_by_carrier]中的定義:[terms]和[group_by_rating]「,

我該如何解決這個問題,以便顯示每個平均值的正確結果?

回答

1

試試這個:

{ 
    "aggs": { 
    "group_by_smartphone": { 
     "terms": { 
     "field": "smartphone" 
     }, 
     "aggs": { 
     "group_by_carrier": { 
      "terms": { 
      "field": "carrier" 
      }, 
      "aggs": { 
      "avg_price": { 
       "avg": { 
       "field": "price" 
       } 
      }, 
      "avg_rating":{ 
       "avg":{ 
       "field": "rating" 
       } 
      }, 
      "avg_speed":{ 
       "avg":{ 
       "field": "speed" 
       } 
      } 
      }  
     } 
     } 
    } 
    } 
} 

所有子聚合必須位於同一aggs結構內。

+0

如果你能看看這個,是否可能:https://stackoverflow.com/questions/45268131/finding-sum-of-average-sub-aggregations – user2896120