2016-12-14 62 views
0

我有一個包含3個字段的索引:user_id,count,timestamp。聚合的彈性搜索百分位數

我希望能夠通過user_id聚合計數,這對於彈性搜索很容易,但是,我也希望能夠做的是對這個結果數據的百分位數。

這可能嗎?

回答

1

是的,它可以使用流水線百分桶聚集這是同級管道匯聚,其計算越過一定的指標的所有桶百分位數的同胞聚集來實現。指定的度量值必須是數字,並且同級聚合必須是多桶聚合。

一個percentiles_bucket聚集看起來像這樣在隔離:

{ 
    "percentiles_bucket": { 
     "buckets_path": "the_sum" 
    } 
} 

下面的代碼片段計算所有的每月總銷量桶的總和:

{ 
    "aggs" : { 
     "sales_per_month" : { 
      "date_histogram" : { 
       "field" : "date", 
       "interval" : "month" 
      }, 
      "aggs": { 
       "sales": { 
        "sum": { 
         "field": "price" 
        } 
       } 
      } 
     }, 
     "sum_monthly_sales": { 
      "percentiles_bucket": { 
       "buckets_paths": "sales_per_month>sales", 
       "percents": [ 25.0, 50.0, 75.0 ] 
      } 
     } 
    } 
} 

及以下可能的響應:

{ 
    "aggregations": { 
     "sales_per_month": { 
     "buckets": [ 
      { 
       "key_as_string": "2015/01/01 00:00:00", 
       "key": 1420070400000, 
       "doc_count": 3, 
       "total_sales": { 
        "value": 50 
       }, 
       "t-shirts": { 
        "doc_count": 2, 
        "sales": { 
         "value": 10 
        } 
       }, 
       "t-shirt-percentage": { 
        "value": 20 
       } 
      }, 
      { 
       "key_as_string": "2015/02/01 00:00:00", 
       "key": 1422748800000, 
       "doc_count": 2 
       "total_sales": { 
        "value": 60 
       }, 
       "t-shirts": { 
        "doc_count": 1, 
        "sales": { 
         "value": 15 
        } 
       }, 
       "t-shirt-percentage": { 
        "value": 25 
       } 
      } 
     ] 
     } 
    } 
}