8.7 SpringBoot集成ElasticSearch之排序

本文介绍了如何在Java项目中使用Elasticsearch的`EmployeeCondition`类实现SortProvider接口,以定制员工信息查询的排序规则,并在`EmployeeController`中调用,展示如何通过POSTMAN测试API获取按年龄和薪水排序的员工列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.condition开发
在项目目录“/src/main/java/com/example/es/condition”的EmployeeCondition类中实现SortProvider接口,具体代码如下。

@Data
public class EmployeeCondition extends SampleEmployeeCondition implements RoutingProvider, ScoreFunctionProvider, SortProvider {
    private static final Sort[] SORTS = {
            //年龄升序
            Sort.fieldAsc("age"),
            //薪水降序
            Sort.fieldDesc("salary"),
    };

    @Override
    public Sort[] getSorts() {
        return SORTS;
    }
}

2.controller开发
在项目目录“/src/main/java/com/example/es”下的EmployeeController类中修改查询员工信息接口,具体代码如下。

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

    @ResponseBody
    @RequestMapping(value = "/queryEmployeePage", method = RequestMethod.GET)
    public Page<EmployeeEntity> queryEmployeePage() {
        EmployeeCondition employeeCondition = new EmployeeCondition();
        employeeCondition.setJob("Java engineer");
        return employeeMapper.queryEmployeeList(employeeCondition);
    }
}

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

[
    {
        "id": "10000002",
        "employeeId": "10000002",
        "name": "Stephen Curry",
        "age": 27,
        "birthday": "1995-08-06",
        "job": "Java engineer",
        "salary": 20000.0,
        "hobby": [
            "tennis",
            "football"
        ],
        "profile": {
            "nickName": "cupid",
            "avatar": "https://www.avatar.com/10000002.png",
            "grade": "golden"
        },
        "relative": [
            {
                "employeeId": "10000001"
            },
            {
                "employeeId": "10000003"
            }
        ]
    },
    {
        "id": "10000001",
        "employeeId": "10000001",
        "name": "James Harden",
        "age": 31,
        "birthday": "1991-01-01",
        "job": "Java engineer",
        "salary": 30000.0,
        "hobby": [
            "swimming",
            "running",
            "basketball",
            "football"
        ],
        "profile": {
            "nickName": "squirrel",
            "avatar": "https://www.avatar.com/10000001.png",
            "grade": "diamonds"
        },
        "relative": [
            {
                "employeeId": "10000002"
            },
            {
                "employeeId": "10000004"
            }
        ]
    }
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值