白话Elasticsearch48-深入聚合数据分析之 Percentiles Aggregation-percentiles百分比算法以及网站访问时延统计及Percentiles优化

简介: 白话Elasticsearch48-深入聚合数据分析之 Percentiles Aggregation-percentiles百分比算法以及网站访问时延统计及Percentiles优化

20190806092132811.jpg


概述

继续跟中华石杉老师学习ES,第48篇

课程地址https://www.roncoo.com/view/55


官方说明

Percentiles Aggregation: 戳这里


20190826161908719.png

20190826161943123.png20190826162020689.png


示例

需求: 网站访问时延统计

为了演示该功能,我们先建个索引,模拟一批数据

#新建索引
PUT /website
{
  "mappings": {
    "logs": {
      "properties": {
        "latency": {
          "type": "long"
        },
        "province": {
          "type": "keyword"
        },
        "timestamp": {
          "type": "date"
        }
      }
    }
  }
}


#模拟数据
POST /website/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" }

DSL:

#网站访问时延统计(50% 95% 99%的请求)
GET /website/logs/_search
{
  "size": 0,
  "aggs": {
    "latency_percentiles": {
      "percentiles": {
        "field": "latency",
        "percents": [
          50,
          95,
          99
        ]
      }
    },
    "latency_avg": {
      "avg": {
        "field": "latency"
      }
    }
  }
}

返回:

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 12,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "latency_avg": {
      "value": 201.91666666666666
    },
    "latency_percentiles": {
      "values": {
        "50.0": 108.5,
        "95.0": 627.4999999999997,
        "99.0": 654
      }
    }
  }
}


可知,

  • 50%的请求 在 108.5毫秒
  • 95%的请求 在 627.5毫秒
  • 99%的请求 在 654毫秒
  • 平均时延 201.9毫秒

数值的最大的值是多少,不是完全准确的

2019082616594768.png


20190826170046143.png


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

GET /website/_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"
          }
        }
      }
    }
  }
}


返回:


20190826170315960.png


Percentiles优化 compression

compression 官方指导: 戳这里


20190826213133223.png


TDigest算法,用很多节点来执行百分比的计算,近似估计,有误差,节点越多,越精准

compression ,限制节点数量最多 compression * 20 = 2000个node去计算 ,默认100

compression 越大,占用内存越多,越精准,性能越差

一个节点占用32字节,100 * 20 * 32 = 64KB

简单来说: 如果你想要percentile算法越精准,compression可以设置的越大

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
2月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
325 5
|
3月前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
141 1
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
153 0
|
2月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
3月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
170 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
858 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
257 2