



- @Service
- public class HotelServiceImpl
- extends ServiceImpl
- implements HotelService {
-
- @Autowired
- private RestHighLevelClient client;//如果容器当中没有注入,需要在启动类中注入
-
- @Override//ctrl + alt + b
- public PageResult search(RequestParams params) {
- try {
- //request
- SearchRequest request = new SearchRequest("hotel");
- //dsl
- String key = params.getKey();
- if(key==null || "".equals(key)){
- //如果没有输如要搜索的内容,就全搜
- request.source().query(QueryBuilders.matchAllQuery());
- }else{
- request.source().query(QueryBuilders.matchQuery("all",key));
- }
- //分页
- int page = params.getPage();
- int size = params.getSize();
- request.source().from((page-1)*size).size(size);
- //发请求
- SearchResponse response = client.search(request, RequestOptions.DEFAULT);
- //处理结果
- PageResult pageResult = resHandler(response);
- return pageResult;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- //处理响应结果的方法
- public PageResult resHandler(SearchResponse response){
- SearchHits searchHits = response.getHits();
- //total
- long total = searchHits.getTotalHits().value;
- System.out.println("total"+total);
- //文档数组在hits>hits中
- SearchHit[] hits = searchHits.getHits();
- List
hotelDocList = new ArrayList<>(); - for (SearchHit hit : hits) {
- String hotelJson = hit.getSourceAsString();
- HotelDoc hotelDoc = JSON.parseObject(hotelJson, HotelDoc.class);
-
- //高亮相关
- Map
highlightFields = hit.getHighlightFields(); - if(highlightFields != null