百分位排名聚合

百分位排名是指小于或等于某个阈值的值所占的百分位数,按指定值分组。例如,如果一个值大于或等于 80% 的值,则其百分位排名为 80。

GET opensearch_dashboards_sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "percentile_rank_taxful_total_price": {
      "percentile_ranks": {
        "field": "taxful_total_price",
        "values": [
          10,
          15
        ]
      }
    }
  }
}

示例响应

...
"aggregations" : {
  "percentile_rank_taxful_total_price" : {
    "values" : {
      "10.0" : 0.055096056411283456,
      "15.0" : 0.0830092961834656
    }
  }
}

此响应表明值 10 处于第 5.5 百分位,值 15 处于第 8.3 百分位。

percentiles 聚合一样,您可以通过设置可选的 tdigest.compression 字段来控制近似程度。较大的值可以提高近似精度,但会占用更多堆空间。默认值为 100。

例如,使用以下请求将 compression 设置为 200

GET opensearch_dashboards_sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "percentile_rank_taxful_total_price": {
      "percentile_ranks": {
        "field": "taxful_total_price",
        "values": [
          10,
          15
        ],
        "tdigest": { 
          "compression": 200
        }
      }
    }
  }
}