ELK 聚合查询
在elasticsearch中es支持对存储文档进行复杂的统计.简称聚合。
ES中的聚合被分为两大类。
1、Metrics, Metrics 是简单的对过滤出来的数据集进行avg,max等操作,是一个单一的数值。
2、ucket, Bucket 你则可以理解为将过滤出来的数据集按条件分成多个小数据集,然后Metrics会分别作用在这些小数据集上。
聚合在ELK里面是一个非常重要的概念,虽然我们在ELK stack里面用于过多的去了解es的实现过程,但是简单的了解es的查询过程,可以有效的帮助我们快速的入门Kibana,通过kibana鼠标点击的方式生成聚合数据。
1、 git先下载数据导入:
git clone git@github.com:xiaoluoge11/longguo-devops.git
执行脚本:
[root@controller longguo-devops]# ./car.sh
#备注:我们会建立一个也许对汽车交易商有所用处的聚合。数据是关于汽车交易的:汽车型号,制造商,销售价格,销售时间以及一些其他的相关数据
Bucket:
1、 按时间统计(可以是一个时间区间的柱形图date_histogram:kibana这样展示):
[root@controller .ssh]# curl -XGET '192.168.63.235:9200/cars/transactions/_search?pretty' -d '
{
"aggs" : {
"articles_over_time" : {
"date_histogram" : {
"field" : "sold",
"interval": "month" ##区间可以为:data.hour,munite,year等
}
}
}
}'
返回结果:
"aggregations" : {
"articles_over_time" : {
"buckets" : [
{
"key_as_string" : "2014-01-01T00:00:00.000Z",
"key" : 1388534400000,
"doc_count" : 1
},
{
"key_as_string" : "2014-02-01T00:00:00.000Z",
"key" : 1391212800000,
"doc_count" : 1
},
#####也可以这样指定:
"field" : "sold",
"interval" : "mount",
"format" : "yyyy-MM-dd" ###指定相应的时间格式
"offset": "+6h" ###区间间隔
####或者按照时间区间来查询:
"aggs": {
"range": {
"date_range": {
"field": "date",
"time_zone": "CET",
"ranges": [
{ "to": "2016-02-15/d" },
{ "from": "2016-02-15/d", "to" : "now/d" },
{ "from": "now/d" },
2、 返回价格区间柱形图(Histogram Aggregation):
[root@controller .ssh]# curl -XGET '192.168.63.235:9200/cars/transactions/_search?pretty' -d '
{
"aggs" : {
"prices" : {
"histogram" : {
"field" : "price",
"interval" : 5000
}
}
}
}'
### Histogram做等间距划分,统计区间的price值,看他落在那个区间,数据间隔是5000:
返回结果:
"aggregations" : {
"prices" : {
"buckets" : [
{
"key" : 10000.0,
"doc_count" : 2
},
{
"key" : 15000.0,
"doc_count" : 1
},
3、 查看每种颜色的销量:
[root@controller .ssh]# curl -XGET '192.168.63.235:9200/cars/transactions/_search?pretty' -d '
{
"aggs" : {
"genres" : {
"terms" : { "field" : "color" }
}
}
}'
###注意可能会报如下错:
"reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [color] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
提示我们数据类型不对,我们修改一下mapping映射:
[root@controller .ssh]# curl -XPUT '192.168.63.235:9200/cars/_mapping/transactions' -d '
> {
> "properties": {
> "color": {
> "type": "text",
> "fielddata": true
> }
> }
> }'
{"acknowledged":true}
再查下就会看到统计分布的结果:
"buckets" : [
{
"key" : "red",
"doc_count" : 4
},
{
"key" : "blue",
"doc_count" : 2
},
{
"key" : "green",
"doc_count" : 2
}
4、 添加一个指标(Metric):
[root@controller .ssh]# curl -XGET '192.168.63.235:9200/cars/transactions/_search?pretty' -d '
{
"aggs" : {
"genres" : {
"terms" : { "field" : "color" }
,
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}'
####avg可以换成max,min,sum等。用stats就表示所有。
5、 用stats找出Metric的所有值。
curl -XGET '192.168.63.235:9200/cars/transactions/_search?pretty' -d '
{
"aggs" : {
"genres" : {
"terms" : { "field" : "color" }
,
"aggs": {
"avg_price": {
"stats": {
"field": "price"
}
}
}
}
}
}'
####返回结果:
"buckets" : [
{
"key" : "red",
"doc_count" : 4,
"avg_price" : {
"count" : 4,
"min" : 10000.0,
"max" : 80000.0,
"avg" : 32500.0,
"sum" : 130000.0
}
}
本文内容出自:日志分析之 ELK stack 实战 课程学习笔记
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
水平分库分表的关键问题及解决思路
分片技术的由来 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSearch等)均自身友好支持Sharding,其原理和思想都是大同小异的。 分布式全局唯一ID 在很多中小项目中,我们往往直接使用数据库自增特性来生成主键ID,这样确实比较简单。而在分库分表的环境中,数据分布在不同的分片上,不能再借助数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。简单介绍下使用和了解过的几种ID生成算法。 1. Twitter的Snowflake(又名“雪花算法”) 2. UUID/GUID(一般应用程序和数据库均支持) 3. MongoDB ObjectID(类似UUID的方式) 4. Ticket Server(数据库生存方式,Flickr采用的就是这种方式) 常见分片规则和策略 分片字段该如何选...
- 下一篇
安装Dubbo注册中心(Zookeeper-3.4.6)
样例视频教程:http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd Dubbo建议使用Zookeeper作为服务的注册中心。 http://www.roncoo.com/details?cid=f614343765bc4aac8597c6d8b38f06fd 注册中心服务器(192.168.3.71)配置,安装Zookeeper: 1、 修改操作系统的/etc/hosts文件中添加: # zookeeper servers 192.168.3.71 edu-provider-01 2、 到http://apache.fayea.com/zookeeper/下载zookeeper-3.4.6: $ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 3、 解压zookeeper安装包: $ tar -zxvf zookeeper-3.4.6.tar.gz 4、 在/home/wusc/zookeep...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启