ES--highlight(高亮)查詢


@

一、高亮查詢

高亮查詢就是你輸入的關鍵字,以一定的特殊字符樣式展示給用戶,讓用戶知道為什么這個結果被檢索出來
在這里插入圖片描述

高亮展示的數據,本身就是文檔中的一個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"));
        }
    }

在這里插入圖片描述

關注我的公眾號【寶哥大數據】, 更多干貨

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM