springboot 使用 Spring Data Elasticsearch 多个模糊查询(wildcard)、高亮显示

多条件模糊查询

在 springboot 使用 Spring Data Elasticsearch 高级查询文档 服务类中加下面代码:

public SearchHits<Toutiao> 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<Toutiao> shs = temp.search(query,Toutiao.class);

    //5.获取查询到的数据内容(返回给前端)
    for(SearchHit<Toutiao> item:shs){
        Toutiao toutiao=item.getContent();
        List<String> titleList=item.getHighlightField("title");
        List<String> 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 高级查询文档 测试类中加下面代码

@Test
public void findByKeyword(){
    SearchHits<Toutiao> shs = service.findByKeyword("入门", "技巧", 0, 5);

    //4.获取总条数(用于前端分页)
    long total =  shs.getTotalHits();
    System.out.println("总共"+total+"条记录");
    //5.获取查询到的数据内容(返回给前端)
    for(SearchHit<Toutiao> item:shs){
        Toutiao toutiao=item.getContent();
        System.out.println(toutiao);
    }
}

原文出处:/show_1IX2LxZmBmkg.html