• es--elasticsearch--篇四:完成各个功能的接口,实现完整的文本搜索案例


    • 先实现基本分页查询

    • 1)先新建了一个requestParams类,方便接收前端页面传过来的查询条件参数
    • 2)业务接口继承了mybatisplus的业务接口
    • 3)编写业务代码:
      1. @Service
      2. public class HotelServiceImpl
      3. extends ServiceImpl
      4. implements HotelService {
      5. @Autowired
      6. private RestHighLevelClient client;//如果容器当中没有注入,需要在启动类中注入
      7. @Override//ctrl + alt + b
      8. public PageResult search(RequestParams params) {
      9. try {
      10. //request
      11. SearchRequest request = new SearchRequest("hotel");
      12. //dsl
      13. String key = params.getKey();
      14. if(key==null || "".equals(key)){
      15. //如果没有输如要搜索的内容,就全搜
      16. request.source().query(QueryBuilders.matchAllQuery());
      17. }else{
      18. request.source().query(QueryBuilders.matchQuery("all",key));
      19. }
      20. //分页
      21. int page = params.getPage();
      22. int size = params.getSize();
      23. request.source().from((page-1)*size).size(size);
      24. //发请求
      25. SearchResponse response = client.search(request, RequestOptions.DEFAULT);
      26. //处理结果
      27. PageResult pageResult = resHandler(response);
      28. return pageResult;
      29. } catch (Exception e) {
      30. throw new RuntimeException(e);
      31. }
      32. }
      33. //处理响应结果的方法
      34. public PageResult resHandler(SearchResponse response){
      35. SearchHits searchHits = response.getHits();
      36. //total
      37. long total = searchHits.getTotalHits().value;
      38. System.out.println("total"+total);
      39. //文档数组在hits>hits中
      40. SearchHit[] hits = searchHits.getHits();
      41. List hotelDocList = new ArrayList<>();
      42. for (SearchHit hit : hits) {
      43. String hotelJson = hit.getSourceAsString();
      44. HotelDoc hotelDoc = JSON.parseObject(hotelJson, HotelDoc.class);
      45. //高亮相关
      46. Map highlightFields = hit.getHighlightFields();
      47. if(highlightFields != null
  • 相关阅读:
    六十八、vue高级
    如何在Debian 10上安装Docker?
    InnoDB行格式(1)
    算法 分糖果-(贪心)
    【Java面试】RDB 和 AOF 的实现原理、优缺点
    金仓数据库KMonitor使用指南--3. 部署
    cv2.approxPolyDP函数实现轮廓线的多边形逼近
    为什么说继承是把双刃剑
    嵌入式分享合集96
    Java【手撕滑动窗口】LeetCode 438. “字符串中所有异位词“, 图文详解思路分析 + 代码
  • 原文地址:https://blog.csdn.net/qq_60555957/article/details/127645584