Elasticsearch Metric聚合
首先查看index文档信息
$ curl -XGET "http://172.16.101.55:9200/_cat/indices?v"
输出
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open customer DvLoM7NjSYyjTwD5BSkK3A 10mb 10mb
查看当前elasticsearch中的数据信息
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "query": { "match_all": {} }, "sort": [ { "customerid": "desc" } ], "from": 0, "size": 1 }'
输出
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "20000",
        "_score" : null,
        "_source" : {
          "customerid" : 20000,
          "firstname" : "WODADM",
          "lastname" : "AEBUFMJAWZ",
          "address1" : "6224597470 Dell Way",
          "address2" : null,
          "city" : "DVCINXG",
          "state" : null,
          "zip" : 0,
          "country" : "Australia",
          "region" : 2,
          "email" : "AEBUFMJAWZ@dell.com",
          "phone" : "6224597470",
          "creditcardtype" : 3,
          "creditcard" : "1869697669055313",
          "creditcardexpiration" : "2010/07",
          "username" : "user20000",
          "password" : "password",
          "age" : 37,
          "income" : 40000,
          "gender" : "F"
        },
        "sort" : [
          20000
        ]
      }
    ]
  }
}
avg:求平均值
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "avg_age": { "avg": { "field": "age" } } } }'
输出
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "avg_age" : {
      "value" : 53.88315
    }
  }
}
min:求最小值
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "avg_age": { "min": { "field": "age" } } } }'
输出
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "avg_age" : {
      "value" : 18.0
    }
  }
}
max:求最大值
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "avg_age": { "max": { "field": "age" } } } }'
输出
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "avg_age" : {
      "value" : 90.0
    }
  }
}
cardinality:去重
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "cardinality_country": { "cardinality": { "field": "country", "precision_threshold" : 100 } } } }'
注:precision_threshold选项表名我们确保当字段唯一值在 100 以内时会得到非常准确的结果
输出
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "cardinality_country" : {
      "value" : 12
    }
  }
}
geo bounds:空间索引
新建图书馆索引
$ curl -XPUT "http://172.16.101.55:9200/museums?pretty" -H "Content-Type: application/json" -d '{ "mappings": { "properties": { "location": { "type": "geo_point"} } } }'
输出
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "museums"
}
查看索引信息
$ curl -XGET "http://172.16.101.55:9200/museums?pretty"
输出
{
  "museums" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "location" : {
          "type" : "geo_point"
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "",
        "number_of_shards" : "",
        "number_of_replicas" : "",
        "uuid" : "91Br4WhVRZSLlZgpu8dihA",
        "version" : {
          "created" : ""
        },
        "provided_name" : "museums"
      }
    }
  }
}
上传测试数据
$ cat geo.json
{"index":{"_id":}}
{"location": "52.374081,4.912350", "name": "NEMO Science Museum"}
{"index":{"_id":}}
{"location": "52.369219,4.901618", "name": "Museum Het Rembrandthuis"}
{"index":{"_id":}}
{"location": "52.371667,4.914722", "name": "Nederlands Scheepvaartmuseum"}
{"index":{"_id":}}
{"location": "51.222900,4.405200", "name": "Letterenhuis"}
{"index":{"_id":}}
{"location": "48.861111,2.336389", "name": "Musée du Louvre"}
{"index":{"_id":}}
{"location": "48.860000,2.327000", "name": "Musée d'Orsay"}
$ curl -H "Content-Type: application/json" -XPOST "http://172.16.101.55:9200/museums/_bulk?pretty&refresh" --data-binary "@geo.json"
查看
$ curl -XPOST "http://172.16.101.55:9200/museums/_search?pretty" -H "Content-Type: application/json" -d '{ "size":0, "query": {"match" : { "name" : "musée" } }, "aggs": {"viewport": {"geo_bounds": {"field": "location", "wrap_longitude": true } } } }'
输出
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "viewport" : {
      "bounds" : {
        "top_left" : {
          "lat" : 48.86111099738628,
          "lon" : 2.3269999679178
        },
        "bottom_right" : {
          "lat" : 48.85999997612089,
          "lon" : 2.3363889567553997
        }
      }
    }
  }
}
Percentiles:求一个numberic类型的文档范围占总文档的百分比
查看
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "percentiles_age": { "percentiles": { "field": "age" } } } }'
输出
{
  "took" : ,
  "timed_out" : false,
  "_shards" : {
    "total" : ,
    "successful" : ,
    "skipped" : ,
    "failed" :
  },
  "hits" : {
    "total" : {
      "value" : ,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "percentiles_age" : {
      "values" : {
        "1.0" : 18.0,
        "5.0" : 21.0,
        "25.0" : 35.543352601156066,
        "50.0" : 54.0,
        "75.0" : 72.0,
        "95.0" : 87.0,
        "99.0" : 90.0
      }
    }
  }
}
说明:年龄小于等于18岁的文档数占总文档数为1%,年龄小于等于54岁的文档数占总文档数小于等于50%
默认的范围为[ 1, 5, 25, 50, 75, 95, 99 ],我们可以自定义
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "percentiles_age": { "percentiles": { "field": "age", "percents": [30, 50, 90] } } } }'
输出
{
  "took" : ,
  "timed_out" : false,
  "_shards" : {
    "total" : ,
    "successful" : ,
    "skipped" : ,
    "failed" :
  },
  "hits" : {
    "total" : {
      "value" : ,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "percentiles_age" : {
      "values" : {
        "30.0" : 39.123456790123456,
        "50.0" : 54.0,
        "90.0" : 83.0
      }
    }
  }
}
Percentile rank:查看给定范围内的文档值占总文档比例
查看年龄小于等于30和年龄小于等于50的文档比例
$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "percentiles_rank_age": { "percentile_ranks": { "field": "age", "values": [30, 50], "keyed": "false" } } } }'
输出
{
  "took" : ,
  "timed_out" : false,
  "_shards" : {
    "total" : ,
    "successful" : ,
    "skipped" : ,
    "failed" :
  },
  "hits" : {
    "total" : {
      "value" : ,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "percentiles_rank_age" : {
      "values" : [
        {
          "key" : 30.0,
          "value" : 17.395
        },
        {
          "key" : 50.0,
          "value" : 45.0
        }
      ]
    }
  }
}
in, max, sum, count and avg$ curl -XGET "http://172.16.101.55:9200/customer/_search?pretty" -H "Content-Type: application/json" -d '{ "size": 0, "aggs": { "stats_age": { "stats": { "field": "age" } } } }'
输出
{
  "took" : ,
  "timed_out" : false,
  "_shards" : {
    "total" : ,
    "successful" : ,
    "skipped" : ,
    "failed" :
  },
  "hits" : {
    "total" : {
      "value" : ,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "stats_age" : {
      "count" : ,
      "min" : 18.0,
      "max" : 90.0,
      "avg" : 53.88315,
      "sum" : 1077663.0
    }
  }
}
Elasticsearch Metric聚合的更多相关文章
- Elasticsearch(8) --- 聚合查询(Metric聚合)
		Elasticsearch(8) --- 聚合查询(Metric聚合) 在Mysql中,我们可以获取一组数据的 最大值(Max).最小值(Min).同样我们能够对这组数据进行 分组(Group).那么 ... 
- ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合
		Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ... 
- Elasticsearch(9) --- 聚合查询(Bucket聚合)
		Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ... 
- Elasticsearch 之聚合分析入门
		本文主要介绍 Elasticsearch 的聚合功能,介绍什么是 Bucket 和 Metric 聚合,以及如何实现嵌套的聚合. 首先来看下聚合(Aggregation): 什么是 Aggregati ... 
- Elasticsearch系列---聚合查询原理
		概要 本篇主要介绍聚合查询的内部原理,正排索引是如何建立的和优化的,fielddata的使用,最后简单介绍了聚合分析时如何选用深度优先和广度优先. 正排索引 聚合查询的内部原理是什么,Elastich ... 
- ElasticSearch 的 聚合(Aggregations)
		Elasticsearch有一个功能叫做 聚合(aggregations) ,它允许你在数据上生成复杂的分析统计.它很像SQL中的 GROUP BY 但是功能更强大. Aggregations种类分为 ... 
- ElasticSearch - 信息聚合系列之聚合过滤
		摘要 聚合范围限定还有一个自然的扩展就是过滤.因为聚合是在查询结果范围内操作的,任何可以适用于查询的过滤器也可以应用在聚合上. 版本 elasticsearch版本: elasticsearch-2. ... 
- (转)Elasticsearch分析聚合
		Elasticsearch不仅仅适合做全文检索,分析聚合功能也很好用.下面通过实例来学习. 一.准备数据 {"index":{ "_index": " ... 
- Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作
		之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ... 
随机推荐
- 4、路由事件 RoutedEvent
			路由事件的类型:具体参考https://www.cnblogs.com/jellochen/p/3475754.html Tunnel隧道方式:路由事件使用隧道策略,以便事件实例通过树向下路由(从根到 ... 
- Jmeter工具使用-分布式架构和服务器性能监控解决方案
			在对项目做大并发性能测试时,常会碰到并发数比较大(比如需要支持10000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能来搭建分布式并发环境. 一.J ... 
- 小程序开发之后台mybatis逆向工程(二)
			上一节搭建好了SSM后台框架,这一节将根据表结构创建实体及映射文件以及mapper接口.如果表过多,会很麻烦,所以mybatis提供了逆向工程来解决这个问题. 上一节 SSM搭建后台管理系统 逆向工程 ... 
- 微信小程序_(组件)flex布局
			小程序建议使用flex布局进行排版 flex是一个盒装弹性布局 flex是一个容器,所有子元素都是他的成员 定义布局:display:flex flex容器的属性: 一.flex-direction: ... 
- [转]java常量池理解总结
			一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池在Clas ... 
- Laravel 中如何区别 Model 或者是 Builder?
			User::where('id',1)->update([]) 和 User::find(1)->update([]) 有异曲同工之效. 额? 当你通过 Laravel 与数据库交 ... 
- kentico中page alias的使用
			这里设置的path or pattern,是针对于根目录而言的 
- Selenium2Library测试web
			Selenium 定位元素 ▲ Locator 可以id或name来用定位界面元素 也可以使用XPath或Dom,但是,必须用XPath=或Dom=来开头 ▲ 最好使用id来定位,强烈建议强制要求开发 ... 
- yum 时一直停在Determining fastest mirrors 界面
			[root@fanyk ~]# yum redis Loaded plugins: fastestmirror Determining fastest mirrors 在yum makecache时, ... 
- 让SpringBoot工程支持热部署
			下载地址:https://files.cnblogs.com/files/xiandedanteng/SpringBootWeb-1_20190928.rar 修改Java文件后,每次要重启才好用,修 ... 
