@[TOC]

一、高亮查问

高亮查问就是你输出的关键字,以肯定的特殊字符款式展现给用户,让用户晓得为什么这个后果被检索进去

高亮展现的数据,自身就是文档中的一个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"));        }    }

关注我的公众号【宝哥大数据】, 更多干货