count(1)

select clssId,count(1) from student group by  classId

{
"size":0,
"aggs": {
"group_by_classId": {
"terms": {
"field": "classId.keyword"
}
}
}
}

结果 key为classId  doc_count 为count

size 0表示只看聚合结果不看搜索结果

{
"took": 82,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_classId": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "2",
"doc_count": 3
},
{
"key": "5",
"doc_count": 1
}
]
}
}
}

count+avg

select clssId,count(1),avg(score) from student group by  classId

{
"size":0,
"aggs": {
"group_by_classId": {
"terms": {
"field": "classId.keyword"
},
"aggs": {
"average_balance": {
"avg": {
"field": "score"
}
}
}
}
}
}

结果

{
"took": 95,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_classId": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "2",
"doc_count": 3,
"average_balance": {
"value": 53.333333333333336
}
},
{
"key": "5",
"doc_count": 1,
"average_balance": {
"value": 10
}
}
]
}
}
}

聚合并排序

select clssId,count(1),avg(score) from student group by  classId order by  avg(score)  desc

{
"size":0,
"aggs": {
"group_by_classId": {
"terms": {
"field": "classId.keyword",
"order": {
"average_score": "desc"
}
},
"aggs": {
"average_score": {
"avg": {
"field": "score"
}
}
}
}
}
}

Metric Aggregations

地理边界聚合

1.添加测试mapping

{
"mappings": {
"doc": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}

2.添加测试数据

{
"text": "成都",
"location": {
"lat": 11.12,
"lon": -5.34
}
}
{
"text": "广州",
"location": {
"lat": 66.12,
"lon": -22.34
}
}
{
"text": "深圳",
"location": {
"lat": 121.12,
"lon": -77.34
}
}

测试query

{
"size":0,
"query" : {
"match_all" : { }
},
"aggs" : {
"viewport" : {
"geo_bounds" : {
"field" : "location",
"wrap_longitude" : true //可选参数,指定边界框是否允许与国际日期变更线重叠,默认值是true。
}
}
}
}

结果

{
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0,
"hits": []
},
"aggregations": {
"viewport": {
"bounds": {
"top_left": {
"lat": 41.1199999647215,
"lon": -71.34000004269183
},
"bottom_right": {
"lat": 11.119999992661178,
"lon": -5.340000037103891
}
}
}
}
}

地理重心聚合

用以上测试数据

query

{
"size":0,
"query" : {
"match_all" : { }
},
"aggs" : {
"centroid" : {
"geo_centroid" : {
"field" : "location"
}
}
}
}

结果

{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0,
"hits": []
},
"aggregations": {
"centroid": {
"location": {
"lat": 26.11999997869134,
"lon": -38.34000003989786
},
"count": 2
}
}
}

平均值聚合

{
"size":0,
"aggs" : {
"avg_grade" : { "avg" : { "field" : "mdProductId" } }
}
}

count聚合

{
"aggs" : {
"types_count" : { "value_count" : { "field" : "type" } }
}
}

最大值聚合

{
"aggs" : {
"max_price" : { "max" : { "field" : "price" } }
}
}

最小值聚合

{
"aggs" : {
"min_price" : { "min" : { "field" : "price" } }
}
}

使用脚本聚合

如最小值为例子

{
"aggs" : {
"min_price" : {
"min" : {
"script" : {
"inline" : "doc.price.value"
}
}
}
}
}

设置聚合默认值

POST /sales/_search
{
"aggs" : {
"grade_max" : {
"max" : {
"field" : "grade",
"missing": 10
}
}
}
}

聚合结果脚本运算

{
"aggs" : {
"min_price_in_euros" : {
"min" : {
"field" : "price",
"script" : {
"inline" : "_value * params.conversion_rate",
"params" : {
"conversion_rate" : 1.2
}
}
}
}
}
}

父子聚合

{
"size": 0,
"aggs": {
"detail": {
"children": {
"type": "ic_product_store_account"--子文档
},
"aggs": {
"sum_price": {
"sum": {
"field": "sumCount"--子文档聚合字段
}
}
}
}
}
}

goupBy语法

avg

{
"size": 0,
"aggs" : {
"group_by_tags" : {
"terms" : { "field" : "productId" },
"aggs" : {
"avg_price" : {
"avg" : { "field" : "price" }
}
}
}
}
}

select  productId,avg(price) from type  grup by  productId

需要查询条件加上query语法就行了

elasticsearch 权威指南聚合阅读笔记(七)的更多相关文章

  1. elasticsearch 权威指南入门阅读笔记(一)

    相关文档 esapi:https://es.xiaoleilu.com/010_Intro/10_Installing_ES.html     https://esdoc.bbossgroups.co ...

  2. 《Elasticsearch 权威指南》阅读笔记

    书籍地址 https://www.elastic.co/guide/cn/elasticsearch/guide/current/languages.html

  3. elasticsearch 权威指南排序阅读笔记(六)

    默认排序 默认查询是通过_source 准确性权重来排序 字段排序 { "query":{ "match":{ "productName": ...

  4. elasticsearch 权威指南搜索阅读笔记(四)

    多索引多type搜索 分页搜索 每页5条 查询一到3页数据 第一页:http://127.0.0.1:9200/blogs2/product/_search?size=5&from=0 第二页 ...

  5. 《javascript权威指南》阅读笔记 1

    3.1-3.5 3.1 数字 3.1首先声明了在JS中的数字是不区分整数值和浮点数值的.其次给出了js浮点类型表示的范围:最大值是±1.7976931348623157×10^308,最小值±5×10 ...

  6. 《HTTP权威指南》--阅读笔记(二)

    URL的三部分: 1,方案 scheme 2,服务器位置 3,资源路径 URL语法: <scheme>://<user>:<password>@<host&g ...

  7. 《HTTP权威指南》--阅读笔记(一)

    HTTP: HyperText Transfer Protocol 测试站点:http://www.joes-hardware.com URI包括URL和URN URI: Uniform Resour ...

  8. 《javascript权威指南》读书笔记——第一篇

    <javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...

  9. Elasticsearch: 权威指南(官方教程)

    <Elasticsearch 权威指南>中文版 序言 前言 基础入门 深入搜索 处理人类语言 聚合 地理位置 数据建模 管理.监控和部署

随机推荐

  1. jabberNet 修改花名册条目的昵称

    修改昵称,这么简单的功能,在jabberNet里怎么实现? 翻遍了jabberNet里的代码,jabber.client.RosterManager也,JabberClient也,似乎都没有现成的方法 ...

  2. Android updater-scripts(Edify Script)各函数详细说明【转】

    本文转载自:http://blog.csdn.net/kwuwei/article/details/40616909 这是Android系统来运行updater-scripts的Edify语言的基本介 ...

  3. Java语言中的程序流程控制

    (1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择  :   a. if / else 语句 b. switch语句 ...

  4. 利用html sessionStorge 来保存局部页面在刷新后回显,保留

    转自:https://blog.csdn.net/u011085172/article/details/77320562 在一个页面里面,有个局部页面记录这当前session的任务记录,之前用的coo ...

  5. Gym - 101981I The 2018 ICPC Asia Nanjing Regional Contest I.Magic Potion 最大流

    题面 题意:n个英雄,m个怪兽,第i个英雄可以打第i个集合里的一个怪兽,一个怪兽可以在多个集合里,有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500 题解:显 ...

  6. go 条件语句if

    一.if 语句 格式 if condition { // do something } 举例 package main import "fmt" func main(){ var ...

  7. npm搭建React项目

    转自:http://blog.csdn.net/u012859720/article/details/70597119 要想使用npm,首先安装Node.js 一.安装全局包 $ npm instal ...

  8. Leetcode0002--Add Two Numbers 链表求和

    [转载请注明]http://www.cnblogs.com/igoslly/p/8672467.html 来看一下题目: You are given two non-empty linked list ...

  9. 关于Core里的 StartUp里的方法的理解。

    public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...

  10. 【SQL】MERGE

    MERGE可以合并多个表中的数据,也可实现多表中数据的同步.使用MERGE语句对表中数据进行有条件的更新和插入.当查找的行存在时,UPDATE更新行中的数据:当查找的行不存在时,INSERT插入数据. ...