Percentiles占比百分位对应的值统计

  对指定字段(脚本)的值按从小到大累计每个值对应的文档数的占比(占所有命中文档数的百分比),返回指定占比比例对应的值。默认返回[ 1, 5, 25, 50, 75, 95, 99 ]分位上的值。如下中间的结果,可以理解为:占比为50%的文档的age值 <= 31,或反过来:age<=31的文档数占总命中文档数的50%

POST /user/_search?size=0
{
  "aggs":{
    "age_percents":{
      "percentiles":{
        "field":"age"
      }
    }
  }
}

  指定分位值

GET /user/_search
{
  "size": 0,
  "aggs":{
    "age_percents":{
      "percentiles":{
        "field":"age",
        "percents":[95,99,99.9] 
      }
    }
  }
}

   Percentiles rank 统计值小于等于指定值的文档占比

      示例1:统计年龄小于25和30的文档的占比

POST /user/_search?size=0
{
  "aggs":{
    "age_percents_rank":{
      "percentile_ranks":{
        "field":"age",
        "values":[25,30] 
      }
    }
  }
}

       需求:网站延迟访问

PUT /logs
{
  "mappings": {
      "properties": {
        "latency": {
          "type": "long"
        },
        "province": {
          "type": "keyword"
        },
        "timestamp": {
          "type": "date"
        }
      }
    }
}

  数据

#模拟数据
POST /logs/_bulk
{ "index": {}}
{ "latency" : 105, "province" : "江苏", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 83, "province" : "江苏", "timestamp" : "2018-10-29" }
{ "index": {}}
{ "latency" : 92, "province" : "江苏", "timestamp" : "2018-10-29" }
{ "index": {}}
{ "latency" : 112, "province" : "江苏", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 68, "province" : "江苏", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 76, "province" : "江苏", "timestamp" : "2018-10-29" }
{ "index": {}}
{ "latency" : 101, "province" : "新疆", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 275, "province" : "新疆", "timestamp" : "2018-10-29" }
{ "index": {}}
{ "latency" : 166, "province" : "新疆", "timestamp" : "2018-10-29" }
{ "index": {}}
{ "latency" : 654, "province" : "新疆", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 389, "province" : "新疆", "timestamp" : "2018-10-28" }
{ "index": {}}
{ "latency" : 302, "province" : "新疆", "timestamp" : "2018-10-29" }

  #网站访问时延统计(50% 95% 99%的请求)

GET /logs/_search
{
  "size":0,
  "aggs":{
    "latency_percentiles":{
      "percentiles":{
        "field":"latency",
        "percents":[
          50,95,99
        ]
      }
    },
    "latency_avg":{
      "avg":{
        "field":"latency"
      }
    }
  }
}

  结果

{
  "took" : 298,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 12,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "latency_avg" : {
      "value" : 201.91666666666666
    },
    "latency_percentiles" : {
      "values" : {
        "50.0" : 108.5,
        "95.0" : 627.4999999999997,
        "99.0" : 654.0
      }
    }
  }
}

  需求二:按地区分组后看下每个地区的 网站访问时延统计

GET /logs/_search
{
  "size":0,
  "aggs":{
    "group_by_province":{
        "terms":{
          "field":"province"
        },
        "aggs":{
          "latency_percentiles":{
            "percentiles":{
            "field":"latency",
            "percents":[
              50,95,99
            ]
          }
       },
      "latency_avg":{
         "avg":{
            "field":"latency"
          }
        }
      }
    }
  }
}


---------------结果--------------
{
  "took" : 27,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 12,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_province" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "新疆",
          "doc_count" : 6,
          "latency_avg" : {
            "value" : 314.5
          },
          "latency_percentiles" : {
            "values" : {
              "50.0" : 288.5,
              "95.0" : 654.0,
              "99.0" : 654.0
            }
          }
        },
        {
          "key" : "江苏",
          "doc_count" : 6,
          "latency_avg" : {
            "value" : 89.33333333333333
          },
          "latency_percentiles" : {
            "values" : {
              "50.0" : 87.5,
              "95.0" : 112.0,
              "99.0" : 112.0
            }
          }
        }
      ]
    }
  }
}

      需求:在200ms以内的,有百分之多少,在1000毫秒以内的有百分之多少 , 那就要用到 percentile ranks metric

GET /logs/_search
{
  "size":0,
  "aggs":{
    "group_by_province":{
      "terms":{
        "field":"province"
      },
      "aggs":{
        "latency_percentile_ranks":{
          "percentile_ranks":{
            "field":"latency",
            "values":[200,1000]
          }
        }
      }
    }
  }
}
--------------------------结果--------------------
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 12,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_province" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "新疆",
          "doc_count" : 6,
          "latency_percentile_ranks" : {
            "values" : {
              "200.0" : 29.40613026819923,
              "1000.0" : 100.0
            }
          }
        },
        {
          "key" : "江苏",
          "doc_count" : 6,
          "latency_percentile_ranks" : {
            "values" : {
              "200.0" : 100.0,
              "1000.0" : 100.0
            }
          }
        }
      ]
    }
  }
}

 

posted on 2021-09-15 22:48  溪水静幽  阅读(230)  评论(0)    收藏  举报