@PostMapping("selectEs")
public ResultResponse selectEs(String sname) throws IOException {
SearchRequest searchRequest = new SearchRequest("student");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//模糊查询➕高亮
if (!StringUtils.isEmpty(sname)){
//设置高亮的前缀后缀
HighlightBuilder highlightBuilder = new HighlightBuilder().preTags("").postTags("").field("sname");
//指定模糊查询的字段
MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(sname, "sname");
//放入查询构造器
searchSourceBuilder.highlighter(highlightBuilder);
searchSourceBuilder.query(queryBuilder);
}
//将查询条件放入查询容器
searchRequest.source(searchSourceBuilder);
//执行条件查询
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
//获取查询数据
SearchHits hits = search.getHits();
SearchHit[] hits1 = hits.getHits();
//创建ArrayList集合用于存储数据
List studentList= new ArrayList<>();
//遍历数据
for (SearchHit documentFields : hits1) {
//获取需要的数据集合
Map sourceAsMap = documentFields.getSourceAsMap();
//将集合中的数据Set进对象
Student student = new Student();
student.setSid((Integer) sourceAsMap.get("sid"));
student.setSname((String) sourceAsMap.get("sname"));
student.setAddress((String) sourceAsMap.get("address"));
//高亮
Map highlightFields = documentFields.getHighlightFields();
if (highlightFields!=null){
HighlightField highlightField = highlightFields.get("sname");
if (highlightField!=null){
Text[] snames = highlightField.getFragments();
if (snames!=null){
//对高亮的字段进行重新赋值
student.setSname(snames[0].toString());
}
}
}
//将赋完值得对象放入List数组
studentList.add(student);
}
return ResultResponse.SUCCESS(studentList);
}