开发者学堂课程【ElasticSearch 最新快速入门教程:排序 sort】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/642/detail/10659
排序 sort
内容介绍
一、 ES JavaAPI 排序 sort
二、 案例实操
一、 ES JavaAPI 排序 sort
案例:
核心代码:addSort(“age”,SortOrder.DESC)//将年龄按照降序排列。
排序查询演示:
@Test
public void
sort
Search (){
//需求:检索索引库 bank 中的 type 之 account 中所有男性客户,根据得分降序排列,若得分相同,然后根据每个账户的余额升序排列。
//步骤:
1. 检索
SearchResponse response=client.prepareSearch(indices)
.setTypes(“account”)
//设置检索的条件
.set
Q
uery(
Q
uery
B
uilders.
termQuery(
“gender.keyword”,“
M
”
)
)
//定制排序规则
//①根据得分降序排列
.
addSort(SortBuilders.scoreSort().order(SortOrder.DESC))
//②若得分相同,根据银行存款余额的升序排列
.
addSort(SortBuilders.fieldSort(
“balance”
).order(SortOrder.ASC))
//设置分页
.setFrom(0)
.setSize(1000)
//触发检索
.get();
2 .分析并显示检索后的结果
SearchHits hits = response.getHits();
for(SearchHits hit:hits){
float
score=hit.
getscore();
string source=hit.getSourceAsString();
System.out.print(
“当前索引的得分是:%.
8f,
内容是:%s%n”,score,source);
}
}
二、 案例实操
(1) 排序检索索引库
需求:查询索引库之 bank 下的 type 之 account ,查询所有女性账户的信息,首先根据分数进行降序排列,若是分数相同,根据银行存款升序排列。
@
T
est
public
void
test
O
rder(
){
//步骤
//①查询
SearchResponse response=client.prepareSearch(…indices:
“bank”
)
.setTypes(“account”)
//女性账户
.setQuery(QueryBuilders.termQuery(name“gender.keyword”,value“
F
”))
//根据得分进行降序排列
.addSort(SortBuilders.scoreSort().order(SortOrder.DESC))
//根据银行存款余额进行升序排列
. addSort(SortBuilders.fieldSort(“balance”).order(SortOrder.ASC))
.
setFrom(0)
.setSize(1000)
.get();
//②分析并显示检索后的结果
SearchHits hits = response.getHits();
System.out.printl
n
(“得分\
t
\
t
内容”);
System.out.printl
n
(“
”);
for(SearchHits hit:hits){
System.out.println(hit.getSource
(
)+
“\
t\t
”+
hit.getSourceAsString());
}
(2)运行结果
因为整个数据库有一千条,所以截图只展示部分检索结果.
(3)数据库附图