栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【elasticsearch 对不同年龄段的员工分组查询统计】

【elasticsearch 对不同年龄段的员工分组查询统计】

如:统计0-20岁,20-40岁,40~60岁各个区间段的员工人数

    @Test
    void rangeAggregation() throws IOException {
        //创建一个查询请求,并指定索引名称
        SearchRequest searchRequest = new SearchRequest("user");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        //统计0-20岁,20-40岁,40~60岁各个区间段的用户人数
        RangeAggregationBuilder rangeAggregationBuilder = AggregationBuilders.range("age_ranges_count")
                .field("age")
                .addRange(0, 20)
                .addRange(20, 40)
                .addRange(40, 60);
        searchSourceBuilder.aggregation(rangeAggregationBuilder);
        searchRequest.source(searchSourceBuilder);
        SearchResponse response;
        try {
            //发起请求,获取响应结果
            response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
            //获取聚合的结果
            Aggregations aggregations = response.getAggregations();
            Aggregation aggregation = aggregations.get("age_ranges_count");
            System.out.println(JSON.toJSonString(aggregation));
            //获取桶聚合结果
            List buckets = ((Range) aggregation).getBuckets();
            //循环遍历各个桶结果
            for (Range.Bucket bucket : buckets) {
                //分组的key
                String key = bucket.getKeyAsString();
                //分组的值
                long docCount = bucket.getDocCount();
                System.out.println(key + "------->" + docCount);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //关闭restHighLevelClient
        restHighLevelClient.close();
    }

响应结果:

{"buckets":[{"aggregations":{"asMap":{},"fragment":true},"docCount":1,"fragment":true,"from":0.0,"fromAsString":"0.0","key":"0.0-20.0","keyAsString":"0.0-20.0","to":20.0,"toAsString":"20.0"},{"aggregations":{"asMap":{},"fragment":true},"docCount":2,"fragment":true,"from":20.0,"fromAsString":"20.0","key":"20.0-40.0","keyAsString":"20.0-40.0","to":40.0,"toAsString":"40.0"},{"aggregations":{"asMap":{},"fragment":true},"docCount":2,"fragment":true,"from":40.0,"fromAsString":"40.0","key":"40.0-60.0","keyAsString":"40.0-60.0","to":60.0,"toAsString":"60.0"}],"fragment":true,"name":"age_ranges_count","type":"range"}
0.0-20.0------->1
20.0-40.0------->2
40.0-60.0------->2

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号