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

8.11 SpringBoot集成ElasticSearch之聚合

8.11 SpringBoot集成ElasticSearch之聚合

1.condition开发
在项目目录“/src/main/java/com/example/es/condition”下新建AggEmployeeCondition聚合条件类,AggEmployeeCondition类需要实现AggProvider接口,具体代码如下。

@Data
public class AggEmployeeCondition extends SampleEmployeeCondition implements AggProvider {

    @Override
    public Aggregation[] getAggregations() {
        TermsAggregation terms = Aggregation.terms("groupByAge").fieldName("age").order(Order.COUNT_DESC, Order.KEY_ASC);
        return new Aggregation[]{terms};
    }
}

2.mapper开发
在项目目录“/src/main/java/com/example/es”的EmployeeMapper类中新增聚合接口,具体代码如下。

@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
    
    @Agg
    SearchResponse aggEmployee(Pageable pageable, AggEmployeeCondition aggEmployeeCondition);

    
    @Agg(aggonly = true)
    Aggregations aggsEmployee(AggEmployeeCondition aggEmployeeCondition);

    
    @Agg
    List aggEmployee(AggEmployeeCondition aggEmployeeCondition);

    
    @Agg
    Map aggEmployeeMap(AggEmployeeCondition aggEmployeeCondition);
}

3.controller开发
在项目目录“/src/main/java/com/example/es”下的EmployeeController类中新增聚合接口,以aggEmployee接口为例演示开发步骤,具体代码如下。

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Resource
    private EmployeeMapper employeeMapper;

    @ResponseBody
    @RequestMapping(value = "/aggEmployee", method = RequestMethod.GET)
    public List aggEmployee() {
        return employeeMapper.aggEmployee(new AggEmployeeCondition());
    }
}

4.测试
启动项目,然后在postman中请求“http://localhost:8080/employee/aggEmployee”,成功后返回对应的信息。

[
    {
        "name": "groupByAge",
        "buckets": [
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "24",
                "docCount": 1,
                "docCountError": 0,
                "key": 24,
                "keyAsNumber": 24,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "25",
                "docCount": 1,
                "docCountError": 0,
                "key": 25,
                "keyAsNumber": 25,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "27",
                "docCount": 1,
                "docCountError": 0,
                "key": 27,
                "keyAsNumber": 27,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "30",
                "docCount": 1,
                "docCountError": 0,
                "key": 30,
                "keyAsNumber": 30,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "31",
                "docCount": 1,
                "docCountError": 0,
                "key": 31,
                "keyAsNumber": 31,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "33",
                "docCount": 1,
                "docCountError": 0,
                "key": 33,
                "keyAsNumber": 33,
                "fragment": true
            },
            {
                "aggregations": {
                    "asMap": {},
                    "fragment": true
                },
                "keyAsString": "35",
                "docCount": 1,
                "docCountError": 0,
                "key": 35,
                "keyAsNumber": 35,
                "fragment": true
            }
        ],
        "type": "lterms",
        "docCountError": 0,
        "sumOfOtherDocCounts": 0,
        "metaData": null,
        "fragment": true
    }
]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/699429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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