• 34.分组聚合操作—bucket


    主要知识点:

    • 学习聚合知识

       

    一、准备数据

       

    1、家电卖场案例背景建立index

    以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析

       

    PUT /tvs

    {

    "mappings": {

    "sales": {

    "properties": {

    "price": {

    "type": "long"

    },

    "color": {

    "type": "keyword"

    },

    "brand": {

    "type": "keyword"

    },

    "sold_date": {

    "type": "date"

    }

    }

    }

    }

    }

    2、插入部分数据

       

    POST /tvs/sales/_bulk

    { "index": {}}

    { "price" : 1000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-10-28" }

    { "index": {}}

    { "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }

    { "index": {}}

    { "price" : 3000, "color" : "绿色", "brand" : "小米", "sold_date" : "2016-05-18" }

    { "index": {}}

    { "price" : 1500, "color" : "蓝色", "brand" : "TCL", "sold_date" : "2016-07-02" }

    { "index": {}}

    { "price" : 1200, "color" : "绿色", "brand" : "TCL", "sold_date" : "2016-08-19" }

    { "index": {}}

    { "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }

    { "index": {}}

    { "price" : 8000, "color" : "红色", "brand" : "三星", "sold_date" : "2017-01-01" }

    { "index": {}}

    { "price" : 2500, "color" : "蓝色", "brand" : "小米", "sold_date" : "2017-02-12" }

       

    二、进行聚合分析

    统计哪种颜色的电视销量最高

       

    GET /tvs/sales/_search

    {

    "size" : 0,

    "aggs" : {

    "popular_colors" : {

    "terms" : {

    "field" : "color"

    }

    }

    }

    }

    对部分语句的解释:

    • size:只获取聚合结果,而不要执行聚合的原始数据,也就是不返回上述插入的数据。
    • aggs:固定语法,要对一份数据执行分组聚合操作
    • popular_colors:对聚合后的数据取一个别名,这个别名是程序员自定义的。
    • terms:根据字段的值进行分组
    • field:根据指定的字段的值进行分组(确定分组的是那一个字段)

       

    执行结果如下:

    {

    "took": 61,

    "timed_out": false,

    "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

    },

    "hits": {

    "total": 8,

    "max_score": 0,

    "hits": []

    },

    "aggregations": {

    "popular_color": {

    "doc_count_error_upper_bound": 0,

    "sum_other_doc_count": 0,

    "buckets": [

    {

    "key": "红色",

    "doc_count": 4

    },

    {

    "key": "绿色",

    "doc_count": 2

    },

    {

    "key": "蓝色",

    "doc_count": 2

    }

    ]

    }

    }

    }

       

    • hits.hits:因为指定了size0,所以hits.hits就是空的,否则就会返回聚合的原始数据,zise指定为20,就返回20条数据。
    • aggregations:这个字段就是返回的聚合结果
    • popular_color:我们聚合后的名称
    • buckets:根据我们指定的field划分出的buckets
    • key:每个bucket对应的那个值
    • doc_count:这个bucket分组内,有多少个数据、本例就是这种颜色的销量
    • bucket默认的排序规则:按照doc_count降序排序
  • 相关阅读:
    Linux配置——Linux服务器搭建Nexus-Maven私服(适合新手比较基础)
    maven配置——Maven3版本的超级POM位置及中央仓库位置
    CentOS7使用——使用命令连接网络配置
    H5页面开发流程
    在Sublime Text 3上集成JSHint检查
    如何快速开发符合规范的web页
    Talking about your future
    Healthy living
    谈论较受欢迎的电影类型
    谈论电视节目
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8535785.html
Copyright © 2020-2023  润新知