springboot 使用 Spring Data Elasticsearch 多个模糊查询(wildcard)、高亮显示 作者:马育民 • 2021-12-05 21:39 • 阅读:10618 # 多条件模糊查询 在 [springboot 使用 Spring Data Elasticsearch 高级查询文档](https://www.malaoshi.top/show_1IX1tOTe226Q.html "springboot 使用 Spring Data Elasticsearch 高级查询文档") 服务类中加下面代码: ``` public SearchHits findByKeyword(String title,String content, Integer pageNum, Integer pageSize) { BoolQueryBuilder builder = QueryBuilders.boolQuery(); //设置要查询博客的标题中含有关键字 builder.should(QueryBuilders.matchQuery("title",title)); builder.should(QueryBuilders.matchQuery("content",content)); //按照点赞数量降序排序 SortBuilder sort = SortBuilders.fieldSort("like").order(SortOrder.DESC); //设置查询分页,从第一页开始,一页显示10条,从0开始 PageRequest page = PageRequest.of(pageNum, pageSize); //2.构建查询 NativeSearchQuery query = new NativeSearchQueryBuilder() .withQuery(builder) .withPageable(page) .withSort(sort) .withHighlightFields( new HighlightBuilder.Field("title") ,new HighlightBuilder.Field("content")) .build(); //3.执行查询 SearchHits shs = temp.search(query,Toutiao.class); //5.获取查询到的数据内容(返回给前端) for(SearchHit item:shs){ Toutiao toutiao=item.getContent(); List titleList=item.getHighlightField("title"); List contentList=item.getHighlightField("content"); if(titleList!=null && titleList.size()>0){ toutiao.setTitle(titleList.get(0)); // System.out.println(titleList.get(0)); } if(contentList!=null && contentList.size()>0){ toutiao.setContent(contentList.get(0)); // System.out.println(contentList.get(0)); } } return shs; } ``` 在 [springboot 使用 Spring Data Elasticsearch 高级查询文档](https://www.malaoshi.top/show_1IX1tOTe226Q.html "springboot 使用 Spring Data Elasticsearch 高级查询文档") 测试类中加下面代码 ``` @Test public void findByKeyword(){ SearchHits shs = service.findByKeyword("入门", "技巧", 0, 5); //4.获取总条数(用于前端分页) long total = shs.getTotalHits(); System.out.println("总共"+total+"条记录"); //5.获取查询到的数据内容(返回给前端) for(SearchHit item:shs){ Toutiao toutiao=item.getContent(); System.out.println(toutiao); } } ``` 原文出处:http://malaoshi.top/show_1IX2LxZmBmkg.html