我使用的是RestHighLevelClient,直接上代码吧json
一、actionapp
@RequestMapping(value = "/test2.do")
public void test2(){
List<PortalVO> list = new ArrayList<PortalVO>();
//指定索引库类型
SearchRequest searchRequest = new SearchRequest("ctpsp_tendernotice").types("portal_tendernotice");
String searchKey = "公告";
String highlightField = "businessObjectName";
Integer pageNo = 0;
Integer pageSize = 15;
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
QueryBuilder queryBuilder1=QueryBuilders.matchPhraseQuery("businessObjectName", "公告");
QueryBuilder queryBuilder = QueryBuilders.boolQuery().must(queryBuilder1);
sourceBuilder.query(queryBuilder);
SearchHits hit = searchClient.highlightSearch(searchRequest, sourceBuilder, highlightField, pageNo, pageSize);
SearchHit[] hits = hit.getHits();
long total = hit.totalHits;
System.out.println(total);
for (SearchHit searchHit : hits) {
//将文档中的每个对象转换json串值
String sourceAsString = searchHit.getSourceAsString();
//将json串值转换成对应的实体对象
PortalVO vo = JSON.parseObject(sourceAsString, PortalVO.class);
//获取对应的高亮域
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
//高亮字段
HighlightField highlightAddress = highlightFields.get(highlightField);
if(highlightAddress!=null){
// 为title串值增长自定义的高亮标签
Text[] titleTexts = highlightAddress.fragments();
String businessObjectName = "";
for (Text text : titleTexts) {
businessObjectName += text;
}
//将追加了高亮标签的串值从新填充到对应的对象
vo.setBusinessObjectName(businessObjectName);
}
list.add(vo);
}
for(int i = 0;i < list.size(); i++){
PortalVO vo = list.get(i);
System.out.println(vo.getBusinessObjectName());
}
}post
二、serviceui
/**
* 高亮显示
* @param searchRequest
* @param queryBuilder 查询内容
* @param highlightField 高亮字段
* @param pageNo
* @param pageSize 每页显示多少条
* @return
*/
public SearchHits highlightSearch(SearchRequest searchRequest,SearchSourceBuilder searchSourceBuilder,String highlightField,Integer pageNo,Integer pageSize){
try {
//搜索体(能够添加多个搜索参数)
//构建高亮体
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<span style=\"color:red\">");
highlightBuilder.postTags("</span>");
//高亮字段
highlightBuilder.field(highlightField);
//搜索体(添加多个搜索参数)
searchSourceBuilder.highlighter(highlightBuilder);
searchRequest.source(searchSourceBuilder);
searchSourceBuilder.from(pageNo).size(pageSize);
//执行查询
SearchResponse response = client.search(searchRequest);
//获取搜索的文档结果
SearchHits hit = response.getHits();
return hit;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} spa