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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 白话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可以设置的越大

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3月前
|
存储 缓存 固态存储
优化Elasticsearch 硬件配置
优化Elasticsearch 硬件配置
174 5
|
3月前
|
缓存 监控 安全
Elasticsearch扩展和优化
【11月更文挑战第4天】
81 6
|
4月前
|
存储 自然语言处理 Java
Elasticsearch写入优化
【10月更文挑战第3天】Elasticsearch:从写入原理谈写入优化
136 2
|
3月前
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
47 5
|
3月前
|
缓存 监控 安全
优化Elasticsearch 集群配置
优化Elasticsearch 集群配置
118 4
|
3月前
|
监控 负载均衡 安全
Elasticsearch集群配置优化
Elasticsearch集群配置优化
68 1
|
3月前
|
存储 缓存 监控
优化 Elasticsearch
优化 Elasticsearch
32 1
|
3月前
|
存储 SQL 监控
|
5月前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能