public static void keyWordQuery() throws Exception {
//连接对象
TransportClient client = linkObject();
//设置搜索条件
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("blog1")
.setTypes("article")
.setQuery(QueryBuilders.termQuery("title", "搜索"));
//设置分页
//setFrom():从第几条开始检索,默认是0。
// setSize():每页最多显示的记录数。
searchRequestBuilder.setFrom(0).setSize(5);
//设置高亮数据
HighlightBuilder hiBuilder=new HighlightBuilder();
hiBuilder.preTags("<font style='color:red'>");
hiBuilder.postTags("</font>");
hiBuilder.field("title");
searchRequestBuilder.highlighter(hiBuilder);
SearchResponse searchResponse=searchRequestBuilder.get();
//遍历搜索结果数据
traverseResult(searchResponse);
//释放资源
client.close();
}
/**
* 遍历查询结果
*
* @param searchResponse
*/
private static void traverseResult(SearchResponse searchResponse) {
SearchHits hits = searchResponse.getHits();
// 获取命中次数,查询结果有多少对象
System.out.println("查询结果有:" + hits.getTotalHits() + "条");
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit searchHit = iterator.next();
// 每个查询对象
System.out.println(searchHit.getSourceAsString());
Text[] text=searchHit.getHighlightFields().get("title").getFragments();
for (Text str : text) {
System.out.println(str);
}
System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐");
}
}