面试题答案
一键面试实现思路
- 聚合操作:使用
terms
聚合按部门进行分组。 - 子聚合:在每个部门的分组内,使用
avg
聚合计算平均薪资,并通过sort
子句按平均薪资升序排列。 - 分页:利用
from
和size
参数进行分页,from
指定起始位置,size
指定每页显示的数量。
ElasticSearch查询语句
{
"size": 0,
"aggs": {
"departments": {
"terms": {
"field": "部门",
"size": 5,
"from": 10
},
"aggs": {
"average_salary": {
"avg": {
"field": "薪资"
}
}
},
"sort": {
"average_salary.value": "asc"
}
}
}
}
解释:
size: 0
:不返回文档,只返回聚合结果。terms
聚合中的field
指定按“部门”字段分组。size
设置为5,表示每页显示5个部门的聚合信息。from
设置为10,表示获取第3页(从0开始计数,每页5个,第3页起始位置为(3 - 1) * 5 = 10)。avg
子聚合计算平均薪资。sort
子句按平均薪资升序排列。