Java 中如何实现 Elastic Search 高亮搜索

作者:郑德鼎 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销

李煜林

Java中​如何实现ElasticSearch高亮搜索?

李煜林 爱记不记的记忆碎片

>>>>>>>>>>

Java中如何实现ElasticSearch高亮搜索?

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。在项目上要实现快速、高效的全文检索,基本上绝大多数都会选择Elasticsearch。我们经常见到在应用中输入搜索关键字,搜索结果中会高亮显示输入的关键字,那么这是怎么实现的呢?

其实ES自身就支持高亮查询功能,ES自身在执行查询时增加一个新的增加一个新的 highlight 参数:

当执行该查询时,返回结果与之前一样,与此同时结果中还多了一个叫做 highlight 的部分。这个部分包含了 about 属性匹配的文本片段,并以 HTML 标签 <em></em> 封装:

我们也可以自定义高亮样式,只要在 highlight 参数中添加自己想要的标签样式:

这样查询返回结果中<em>标签便会更换为自定义标签样式。

但是这是手动查询ES的实现。在Java开发中我们一般使用客户端API来访问ES,那么这又该如何实现呢?

其实很简单,当我们在项目中引入ES服务和要使用的客户端API后,我们只需查看API文档,按照API文档给的调用方式即可实现。我们以JestClient API为例。

在JestClient 中我们只需要在查询时设置高亮参数然后查询即可,如下

那么打印结果

about: I love to go<b style='color:red'> rock<b style='color:red'> climbing</b>.

这样前端展示取值后显示即可

本文只是以JestClient为例,还有其他许多方式都可以实现Es的高亮查询,例如RestHighLevelClient、elasticsearchTemplate等,但基本原理都是一样,都是通过在查询时添加高亮参数实现。

附:高亮参数

E.N.D

作者:李煜林

审核:梁 空 超

编辑:朱思聪

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「Java中如何实现ElasticSearch高亮搜索.docx」整理生成,仅用于内部技术分享与学习交流。