多条件模糊查询
在 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);
}
}