ES--highlight(高亮)查詢
阿新 • • 發佈:2021-07-10
@
目錄一、高亮查詢
高亮查詢就是你輸入的關鍵字,以一定的特殊字元樣式展示給使用者,讓使用者知道為什麼這個結果被檢索出來
高亮展示的資料,本身就是文件中的一個field,單獨將field以highlight的形式返回給你。
ES提供了一個highlight屬性,和query同級別的。
- fragment_size :指定高亮資料展示多少個字元回來;
- pre_tag:指定字首標籤,如
<font color="red">
- post_tags:指定字尾標籤,如
</font>
- field:指定那個欄位為高亮欄位
1.1、例項:依據smsContent欄位包含的魅力欄位語法高;
1.1.1、RESTful 程式碼
POST /sms-logs-index/_search { "query": { "match": { "smsContent": "魅力" } }, "highlight": { "fields": { "smsContent": {} }, "pre_tags": "<font color='red'>", "post_tags": "</font>", "fragment_size": 10 } }
1.1.2、java 程式碼
@Test public void height() throws IOException { // 1、SearchRequest SearchRequest searchRequest = new SearchRequest(index); // 2、指定查詢條件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // 2.1、查詢條件 searchSourceBuilder.query(QueryBuilders.matchQuery("smsContent", "魅力")); // 2.2、指定高亮 HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.field("smsContent", 10) .preTags("<font color='red'>") .postTags("</font>"); searchSourceBuilder.highlighter(highlightBuilder); searchRequest.source(searchSourceBuilder); // 3、執行 SearchResponse resp = client.search(searchRequest, RequestOptions.DEFAULT); // 4、列印 for (SearchHit hit : resp.getHits().getHits()) { System.out.println(hit.getHighlightFields().get("smsContent")); } }