1、代码高亮显示
@Test
public void heightCode() throws Exception{
TransportClient client = ESTools.getTransportClient();
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.preTags("<code>");
highlightBuilder.postTags("</code>");
highlightBuilder.field("name");
QueryBuilder builder = QueryBuilders.matchQuery("name","java开发");
SearchResponse response = client.prepareSearch("book").setQuery(builder)
.highlighter(highlightBuilder)
.setFetchSource(new String[]{"name","studymodel"}, null)
.get();
SearchHits hits = response.getHits();
for (SearchHit searchHit : hits) {
System.out.println(searchHit.getSourceAsString());
System.out.println(searchHit.getHighlightFields());
}
client.close();
}
{"studymodel":"2020","name":"Bootstrap开发框架"}
{name=[name], fragments[[Bootstrap<code>开</code><code>发</code>框架]]}
{"studymodel":2018,"name":"spring开发框架"}
{name=[name], fragments[[spring<code>开</code><code>发</code>框架]]}
{"studymodel":2020,"name":"java实战"}
{name=[name], fragments[[<code>java</code>实战]]}
{"studymodel":2020,"name":"java实战001"}
{name=[name], fragments[[<code>java</code>实战001]]}
2、实战:获取高亮以及最佳片段信息代码实现
@Test
public void heightCode() throws Exception{
TransportClient client = ESTools.getTransportClient();
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.preTags("<span style='color:red'>");
highlightBuilder.postTags("</span>");
highlightBuilder.field("name");
QueryBuilder builder = QueryBuilders.matchQuery("name","java开发");
SearchResponse response = client.prepareSearch("book").setQuery(builder)
.highlighter(highlightBuilder)
.setFetchSource(new String[]{"name","studymodel"}, null)
.get();
SearchHits hits = response.getHits();
long totalHits = hits.getTotalHits();
System.out.println("记录数=="+totalHits);
List<UIndex> list = new ArrayList<>();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
UIndex u = new UIndex();
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
String id = (String) sourceAsMap.get("id");
String name = (String) sourceAsMap.get("name");
HighlightField highlightField = hit.getHighlightFields().get("name");
System.out.println(highlightField);
if(highlightField==null){
u.setName(name);
}else{
u.setName(hit.getHighlightFields().get("name").fragments()[0].toString());
}
u.setId(id);
list.add(u);
}
System.out.println(list);
client.close();
}
完整四篇实列代码,可根据需求,整合到SSM中,实现ES搜索引擎。