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("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐");
}
}