Elasticsearch聚合

目录

第1关:Elasticsearch聚合概述

代码

第2关:Elasitcsearch嵌套桶

代码

第3关:Elasticsearch聚合统计

代码

第4关:Elasticsearch指定范围聚合

代码

第5关:Elasticsearch过滤与聚合

代码

第6关:Elasticsearch多桶排序

代码

第7关:Elasticsearch去重

代码

第8关:Elasticsearch百分位计算

代码


第1关:Elasticsearch聚合概述

任务描述
本关任务:根据所学知识,掌握什么是 Elasticsearch 聚合,以及使用聚合计算每种品牌的红色汽车销量情况。

代码
#!/bin/bash
# 请在此处编写命令
# ********** Begin ********** #
curl -H 'content-Type:application/json' -XPUT 'http://localhost:9200/cars/_mapping/transactions?pretty' -d '{
    "properties": {
        "make": {
            "type": "text",
            "fielddata": true
        }
    }
}'
curl -H "Content-Type: application/json" -XGET 'http://127.0.0.1:9200/cars/transactions/_search?pretty' -d '{
    "size" : 0,
    "query": {
        "match": {
            "color": "red"
        }
    },
    "aggs" : {
        "popular_make" : {
            "terms" : {
              "field" : "make"
            }
        }
    }
}'
# ********** End ********** #

第2关:Elasitcsearch嵌套桶

任务描述
本关任务:计算每种价格下,每种品牌的销量情况。

相关知识
前面的关卡中我们查询了每个桶里面的文档数量。 但通常,我们的应用需要提供更复杂的文档度量。 例如,每种颜色汽车的平均价格是多少?

为了获取更多信息,我们需要告诉 Elasticsearch 使用哪个字段,计算何种度量。这需要将度量嵌套在桶内,度量会基于桶内的文档计算统计结果。

代码
#!/bin/bash
# 请在此处编写命令
# ********** Begin ********** #
curl -H 'content-Type:application/json' -XPUT 'http://localhost:9200/cars/_mapping/transactions?pretty' -d '{
    "properties": {
        "make": {
            "type": "text",
            "fielddata": true
        }
    }
}'
curl -H "Content-Type: application/json" -XGET 'http://127.0.0.1:9200/cars/transactions/_search?pretty' -d '{
    "size" : 0,
    "aggs": {
        "prices": {
            "terms": {
                "field": "price"
            },
            "aggs": {
                "makes": {
                    "terms": {
                        "field": "make"
                    }
                }
            }
        }
    }
}'
# ********** End ********** #

第3关:Elasticsearch聚合统计

任务描述
本关任务:我们构建聚合以便按季度展示所有汽车品牌总销售额。同时按季度、按每个汽车品牌计算销售总额,以便可以找出哪种品牌最赚钱。

相关知识
聚合还有一个令人激动的特性就是能够十分容易地将它们转换成图表和图形。

直方图 histogram 特别有用。 它本质上是一个条形图,如果有创建报表或分析仪表盘的经验,那么我们会毫无疑问的发现里面有一些图表是条形图。 创建直方图需要指定一个区间,如果我们要为售价创建一个直方图,可以将间隔设为 20,000。这样做将会在每个 $20,000 档创建一个新桶,然后文档会被分到对应的桶中。

对于仪表盘来说,我们希望知道每个售价区间内汽车的销量。我们还会想知道每个售价区间内汽车所带来的收入,可以通过对每个区间内已售汽车的售价求和得到。

代码
#!/bin/bash
# 请在此处编写命令
# ********** Begin ********** #
curl -H 'content-Type:application/json' -XPUT 'http://localhost:9200/cars/_mapping/transactions?pretty' -d '{
    "properties": {
        "make": {
            "type": "text",
            "fielddata": true
        }
    }
}'
curl -X GET "localhost:9200/cars/transactions/_search?pretty" -H 'Content-Type: application/json' -d'
{
   "size" : 0,
   "aggs": {
      "sales": {
         "date_histogram": {
            "field": "sold",
            "interval": "quarter", 
            "format": "yyyy-MM-dd",
            "min_doc_count" : 0,
            "extended_bounds" : {
                "min" : "2014-01-01",
                "max" : "2014-12-31"
            }
         },
         "aggs": {
            "per_make_sum": {
               "terms": {
                  "field": "make"
               },
               "aggs": {
                  "sum_price": {
                     "sum": { "field": "price" } 
                  }
               }
            },
            "total_sum": {
               "sum": { "field": "price" } 
            }
         }
      }
   }
}
'
# ********** End ********** #

第4关:Elasticsearch指定范围聚合

任务描述
本关任务:查询汽车品牌 honda 各个颜色的平均售价。

相关知识
通过之前的学习,你可能已经注意到,我们的搜索请求省略了一个 query。 整个请求只不过是一个聚合。

聚合可以与搜索请求同时执行,但是我们需要理解一个新概念: 范围 。 默认情况下,聚合与查询是对同一范围进行操作的,也就是说,聚合是基于我们查询匹配的文档集合进行计算的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值