高亮显示是在结果文档中显示查询中的哪个或哪些单词被匹配的过程。先来看看ES的脚本是如何显示高亮的:

数据如下:

在Sense中执行如下脚本

GET http://localhost:9200/article/content/_search{"query" : {"term" : {"view" : "100"}},"highlight" : {"pre_tags" : [ "<em>" ],"post_tags" : [ "</em>" ],"fields" : {"view" : {}}}
}

输出如下:

{"took": 4,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 1,"max_score": 0.9808292,"hits": [{"_index": "article","_type": "content","_id": "AV5Qs4GbXljy_f1_Lvwl","_score": 0.9808292,"_source": {"author": "AAAA","titile": "中国获租巴基斯坦瓜达尔港2000亩土地 为期43年","tag": "JAVA,ANDROID,C++,LINUX","content": "据了解,瓜达尔港务局于今年6月完成了1500亩土地的征收工作,另外500亩的征收工作也将很快完成","view": "100","date": "2017-09-05T14:21:34"},"highlight": {"view": ["<em>100</em>"]}}]}
}

view中的值被加入了<em>标签.

注意:

要高亮显示的内容必须要包含在你查询的内容中,如果不在,就不能正确的显示。以下就是一个反例:

那么如何使用Jest客户端来高亮显示了?具体代码如下:

    private static JestClient jestClient;private static String indexName = "article";  private static String typeName = "content"; @Beforepublic void getClient() throws Exception{JestClientFactory factory = new JestClientFactory();  factory.setHttpClientConfig(new HttpClientConfig  .Builder("http://localhost:9200")  .gson(new GsonBuilder().setDateFormat("yyyy-MM-dd'T'hh:mm:ss").create())  .connTimeout(1500)  .readTimeout(3000)  .multiThreaded(true)  .build());jestClient=factory.getObject();}/*** 搜索高亮显示* @throws Exception*/@Testpublic void createSearch() throws Exception {SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.termQuery("view", "200"));HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.field("view");//高亮titlehighlightBuilder.preTags("<em>").postTags("</em>");//高亮标签highlightBuilder.fragmentSize(500);//高亮内容长度searchSourceBuilder.highlighter(highlightBuilder);System.out.println(searchSourceBuilder.toString());Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(indexName).build();SearchResult result = jestClient.execute(search);System.out.println(result.getJsonString());System.out.println("本次查询共查到:"+result.getTotal()+"篇文章!");List<Hit<CsdnBlog,Void>> hits = result.getHits(CsdnBlog.class);System.out.println(hits.size());for (Hit<CsdnBlog, Void> hit : hits) {CsdnBlog source = hit.source;//获取高亮后的内容Map<String, List<String>> highlight = hit.highlight;List<String> views = highlight.get("view");//高亮后的titleif(views!=null){source.setView(views.get(0));}System.out.println("标题:"+source.getTitile());System.out.println("内容:"+source.getContent());System.out.println("浏览数:"+source.getView());System.out.println("标签:"+source.getTag());System.out.println("作者:"+source.getAuthor());}}

输出如下:

标题:中国获租巴基斯坦瓜达尔港2000亩土地 为期43年
内容:据了解,瓜达尔港务局于今年6月完成了1500亩土地的征收工作,另外500亩的征收工作也将很快完成
浏览数:<em>200</em>
标签:JAVA,ANDROID,C++,LINUX
作者:BBBB

Elasticsearch5.5.1 使用JEST客户端高亮显示相关推荐

  1. 重学Elasticsearch第8章 : SpringBoot整合Jest客户端

    文章目录 JestClient介绍 引入依赖 ES的配置 (1).application.yml 配置文件 (2).java 连接配置类 JestClient操作ElasticSearch 客户端初始 ...

  2. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】

    1.简介 SpringBoot 项目初始化时就有 NoSQL 选项 Spring Data Elasticsearch(Access+Driver) 此时 pom 文件里引入的依赖是 spring-b ...

  3. jest 客户端 实现 Sliced+Scroll并行查询

    首先感谢 Bboss作者兼 elasticsearch交流 群主(一个非常热心的大佬) 这里直接看代码: public Map<Integer, List<JestResult>&g ...

  4. 你知道什么是Jest吗?

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 关注我,回复口令获取可获取独家整理的学习资料: - 001:领取<Spring Boot基础教程 ...

  5. 干货 | Elasticsearch Java 客户端演进历史和选型指南

    1.Elasticsearch java 客户端为什么要选型? Elasticsearch 官方提供了很多版本的 Java 客户端,包含但不限于: Transport 客户端 Java REST 客户 ...

  6. ELK学习笔记之ElasticSearch简介

    0x00 什么是Elasticsearch Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的 ...

  7. 干货 | Elasticsearch开发人员最佳实战指南

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 几个月以来,我一直在记录自己开发Elasticsearc ...

  8. ElasticSearch详细教程-基础加实战

    文章目录 第1章 ElasticSearch基础 1.1 简介 1.2 使用场景 1.3 ES与其他数据存储进行比较 1.4 ElasticSearch的特点 1.4.1 天然分片,天然集群 1.4. ...

  9. ElasticSearch操作指南

    1 ElasticSearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎.是使用Java开发的. 1.1 使用场景 为用户提供关键字 ...

最新文章

  1. java中 如何用if_不在Java中使用if语句
  2. WebConfig的经典使用,大家一起交流一下吧!!!
  3. java 日期及别的小技巧
  4. 树的存储结构(树的二叉链表(孩子—兄弟))
  5. 第72课 函数与最大值-2021.10.15
  6. Java开发手册(嵩山版)
  7. 或非门sr锁存器_d锁存器与sr锁存器的区别
  8. tp5.1 出现Class 'Qcloud\Sms\SmsSingleSender' not found(mac和windows没有,linux出现)
  9. Java——aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
  10. NEO(小蚁)Seraph ID调研
  11. 安卓系统双屏异显_Android10模拟器上调试双屏异显
  12. 【板栗糖GIS】WPS-怎么在表格里设置超链接并修改风格
  13. warcraft 3 经典语句之月之女祭司(Priestess of the moon)
  14. phpspreadsheet 读取 Excel 表格问题
  15. CF1637E Best Pair
  16. 数学小游戏:原创字谜几则
  17. jsp之bootstrap-datetimepicker日期插件
  18. 查询一列不同值的数据 mysql_怎样查询两个表中同一字段的不同数据值
  19. 【愚公系列】2022年09月 微信小程序-three.js绘制多维旋转正方体
  20. Galaxy Note 通过Kies升级,固件存放目录在哪里?

热门文章

  1. 头歌urllib爬虫-第一关
  2. Linux 解压tar
  3. 自学AE AK大神笔记001_简易替换背景
  4. 用Java将doc文档转成pdf格式
  5. k8s部署Traefik
  6. Leetcode36.Valid Sudoku有效的数独
  7. cocos creater 实现消除星星小游戏
  8. thinkphp 服务器信息,thinkphp获取服务器地址
  9. java毕业生设计作业批改管理系统计算机源码+系统+mysql+调试部署+lw
  10. 高绩效人力资源团队与众不同的 5 件事