【发布时间】:2016-11-08 14:12:47
【问题描述】:
我们正在尝试使用Percentiles aggregation 在ElasticSearch 中生成百分位数
我们正在使用 ElasticSearch 监控我们的 API 性能。我们存储的一组示例文档是
{"name": "GET /login", "avg":2.2, "count": 5}
{"name": "GET /login", "avg":1.5, "count": 3}
{"name": "GET /login", "avg":6.9, "count": 1}
{"name": "GET /login", "avg":3.1, "count": 1}
在哪里
-
count是在特定时间段内到达我们服务器的GET /login网络请求数。 -
avg是平均响应时间。
我们使用以下查询来获取百分位数。
GET /hist/t/_search
{
"aggs": {
"avg_time_percentile": {
"percentiles": {
"field": "avg",
"percents" : [75, 95, 99]
}
}
}
}
我们得到以下响应
"avg_time_percentile": {
"values": {
"75.0": 3.75,
"95.0": 5.549999999999999,
"99.0": 5.909999999999999
}
然而,我们想要的是:
"avg_time_percentile": {
"values": {
"75.0": 2,
"95.0": 4.349999999999998,
"99.0": 5.670000000000002
}
错误值的原因是,例如2.2 仅在一条记录中。但是计数是5,应该算5次。
我如何在 ElasticSearch 中做到这一点。
【问题讨论】:
标签: elasticsearch