ES--highlight(高亮)查询

@[TOC] # 一、高亮查询 高亮查询就是你输入的关键字,以一定的特殊字符样式展示给用户,让用户知道为什么这个结果被检索出来 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210331170042176.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1eGludGRyaA==,size_16,color_FFFFFF,t_70) 高亮展示的数据,本身就是文档中的一个**field**,单独将field以highlight的形式返回给你。 ES提供了一个highlight属性,和query同级别的。 - fragment_size :指定高亮数据展示多少个字符回来; - pre_tag:指定前缀标签,如 `` - post_tags:指定后缀标签,如 `` - field:指定那个字段为高亮字段 ## 1.1、实例:依据smsContent字段包含的魅力字段语法高; ### 1.1.1、RESTful 代码 ```json POST /sms-logs-index/_search { "query": { "match": { "smsContent": "魅力" } }, "highlight": { "fields": { "smsContent": {} }, "pre_tags": "", "post_tags": "", "fragment_size": 10 } } ``` ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210331170409400.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1eGludGRyaA==,size_16,color_FFFFFF,t_70) ### 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("") .postTags(""); 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")); } } ``` ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210331171327700.png) # 关注我的公众号【宝哥大数据】, 更多干货 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210710133932154.png)
上一篇:Node.js进阶篇-koa、钩子函数、websocket、嵌入式开发


下一篇:2021-06-28