html显示elasticsearch,ElasticSearch查询:高亮显示(10)
什么是高亮顯示
根據(jù)關(guān)鍵字搜索時,搜索出的內(nèi)容中的關(guān)鍵字會顯示不同的顏色,稱之為高亮百度搜索關(guān)鍵字"elasticsearch"
京東商城搜索“iphone xs max”
高亮顯示html分析
通過開發(fā)者工具查看高亮數(shù)據(jù)的html代碼實現(xiàn):
高亮顯示實現(xiàn)
編程步驟
創(chuàng)建Settings配置信息對象
創(chuàng)建ES傳輸客戶端對象
創(chuàng)建搜索請求構(gòu)建對象(封裝查詢條件、設(shè)置高亮對象)
執(zhí)行請求,得到搜索響應對象
獲取搜索結(jié)果
迭代搜索結(jié)果(獲取高亮內(nèi)容)
釋放資源
代碼實現(xiàn)
/**
*
* 高亮顯示
* 注意:如果需要高亮顯示,必須帶關(guān)鍵詞查詢的!!!
* @throws Exception
*/
@Test
public void test8() throws Exception {
//1. 創(chuàng)建Settings配置信息對象
Settings settings = Settings.builder().put("cluster.name","elasticsearch").build();
//2. 創(chuàng)建ES傳輸客戶端對象
TransportClient transportClient = new PreBuiltTransportClient(settings);
transportClient.addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"),9300));
//3. 創(chuàng)建搜索請求構(gòu)建對象(封裝查詢條件)(***)
SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("blog3").setTypes("article");
searchRequestBuilder.setQuery(QueryBuilders.queryStringQuery("分布式"));
//一、先設(shè)計高亮的樣式: 筆記本
//HighlightBuilder: 構(gòu)建高亮的樣式
HighlightBuilder highlightBuilder = new HighlightBuilder();
//1.1 需要高亮的Field名稱(可以是1個或n個)
highlightBuilder.field("title").field("content");
//1.2 前綴
highlightBuilder.preTags("");
//1.3 后綴
highlightBuilder.postTags("");
searchRequestBuilder.highlighter(highlightBuilder);
//二、執(zhí)行關(guān)鍵詞查詢
//4. 執(zhí)行請求,得到搜索響應對象
SearchResponse searchResponse = searchRequestBuilder.get();
//5. 獲取搜索結(jié)果
SearchHits hits = searchResponse.getHits();
//6. 迭代搜索結(jié)果
System.out.println("總命中數(shù):"+hits.totalHits);
for(SearchHit hit:hits){
//三、獲取高亮內(nèi)容,進行展示
/**
* {
* "title":"筆記本",
* "content":"筆記本"
* }
*/
Map highlightFields = hit.getHighlightFields();
//取出結(jié)果
//System.out.println(hit.getSourceAsMap());
System.out.println(hit.getSourceAsMap().get("id"));
//展示高亮的內(nèi)容:highlightFields.get("title").getFragments()[0].toString()
//判斷該內(nèi)容有沒有高亮
if(highlightFields.get("title")!=null){
System.out.println(highlightFields.get("title").getFragments()[0].toString());
}else{
System.out.println(hit.getSourceAsMap().get("title"));
}
if(highlightFields.get("content")!=null){
System.out.println(highlightFields.get("content").getFragments()[0].toString());
}else{
System.out.println(hit.getSourceAsMap().get("content"));
}
System.out.println("===================");
}
//7. 釋放資源
transportClient.close();
}
運行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的html显示elasticsearch,ElasticSearch查询:高亮显示(10)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学计算机的八字,计算机教室八字格言
- 下一篇: html校验长度为9位,2018记一次前