ES上存在如下数据

如果想查询interest中含有basketball的文档,并对basketball进行高亮,ES查询语句如下

GET my_index/my_type/_search
{"query": {"match": {"interest": "basketball"}}, "highlight":{"fields": {"interest": {}}},"size": 10
}

从搜索结果中可以看出basketball前后加上了<em></em>,对basketball进行了高亮

下面用JAVA代码实现搜索结果的高亮

1.创建带有高亮的搜索方法,实现高亮可以使用HighlightBuilder

public class ElasticsearchUtils {private Client client;public ElasticsearchUtils(String clusterName, String ipAddress) {Settings settings = ImmutableSettings.settingsBuilder()//设置集群名称 .put("cluster.name", clusterName).put("client.transport.ignore_cluster_name", false).put("node.client", true).put("client.transport.sniff", true).build();client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(ipAddress,9300));}/*** 执行搜索(带高亮)* @param indexname 索引名称* @param type 索引类型* @param queryBuilder 查询条件* @param highligtFiled 高亮字段* @return*/public SearchResponse searcherHighlight(String indexName, String typeName,QueryBuilder queryBuilder, String highligtFiled) {SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//构造搜索对象searchSourceBuilder.query(queryBuilder);//设置查询条件//设置高亮String preTags = "<strong>";String postTags = "</strong>";HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.preTags(preTags);//设置前缀highlightBuilder.postTags(postTags);//设置后缀highlightBuilder.field(highligtFiled);//设置高亮字段searchSourceBuilder.highlight(highlightBuilder);//设置高亮信息SearchRequest searchRequest = new SearchRequest(indexName);//创建查询请求对象searchRequest.types(typeName);//设置typesearchRequest.extraSource(searchSourceBuilder);//设置searchSourceBuilderSearchResponse searchResponse = client.search(searchRequest).actionGet();//执行查询return searchResponse;}
}

2.创建测试类

public class HighlightTest {public static void main(String[] args) {//创建对象,设置集群名称和IP地址ElasticsearchUtils es = new ElasticsearchUtils("im_shanmenglu","localhost");String indexName = "my_index";//索引名称String typeName = "my_type";//类型名称String highligtFiled = "interest";//设置高亮的字段,此处查询的是interest中含有basketball的文档,因此高亮字段设为interestQueryBuilder queryBuilder = QueryBuilders.matchQuery("interest","basketball");//查询interest中含有basketball的文档SearchResponse searchResponse = es.searcherHighlight(indexName,typeName, queryBuilder, highligtFiled);SearchHits hits = searchResponse.getHits();SearchHit[] searchHits = hits.getHits();for (SearchHit searchHit : searchHits) {Map<String, HighlightField> map = searchHit.getHighlightFields();System.out.println(map.toString());}}
}

searchResponse的结果如下,可以看到highlight中的basketball前后已经加上了设置的前缀和后缀

{"took" : 1,"timed_out" : false,"_shards" : {"total" : 5,"successful" : 5,"failed" : 0},"hits" : {"total" : 2,"max_score" : 0.19178301,"hits" : [ {"_index" : "my_index","_type" : "my_type","_id" : "1","_score" : 0.19178301,"_source":{ "name": "a","interest": "football basketball"
}
,"highlight" : {"interest" : [ "football <strong>basketball</strong>" ]}}, {"_index" : "my_index","_type" : "my_type","_id" : "2","_score" : 0.19178301,"_source":{ "name": "b","interest": "music basketball"
}
,"highlight" : {"interest" : [ "music <strong>basketball</strong>" ]}} ]}
}

控制台输出结果如下:

{interest=[interest], fragments[[football <strong>basketball</strong>]]}
{interest=[interest], fragments[[music <strong>basketball</strong>]]}

HighlightBuilder高亮显示相关推荐

  1. 好玩的ES--第三篇之过滤查询,整合SpringBoot

    好玩的ES--第三篇之过滤查询,整合SpringBoot 过滤查询 过滤查询 使用 类型 term . terms Filter ranage filter exists filter ids fil ...

  2. es拼音分词 大帅哥_SpringBoot集成Elasticsearch 进阶,实现中文、拼音分词,繁简体转换...

    Elasticsearch 分词 分词分为读时分词和写时分词. 读时分词发生在用户查询时,ES 会即时地对用户输入的关键词进行分词,分词结果只存在内存中,当查询结束时,分词结果也会随即消失.而写时分词 ...

  3. es入门学习7-java-es自身API

    es入门学习7-java-es自身API 使用起前面的集群环境进行学习 一. 公共的东西 1.1.项目位置 1.2.导入依赖 <dependency><groupId>org. ...

  4. html显示elasticsearch,ElasticSearch查询:高亮显示(10)

    什么是高亮显示 根据关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮百度搜索关键字"elasticsearch" 京东商城搜索"iphone xs max ...

  5. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤

    应用说明见代码注解. 1.简单搜索实例展示: public void search() throws IOException {// 自定义集群结点名称String clusterName = &qu ...

  6. Java连接Elasticsearch6.xxx 代码高亮显示篇四

    1.代码高亮显示 /**** 测试代码高亮显示 * @throws Exception*/@Testpublic void heightCode() throws Exception{//1.获取客户 ...

  7. ElastSearch整合SpringBoot模仿京东商城实现关键字高亮显示

    前提:下载Elasticsearch服务并开启,使用SpringBoot集成Elasticsearch客户端 用到的技术:Springboot+Vue+Thymeleaf+Elasticsearch ...

  8. Elasticsearch7.6(windows版单机版)api使用及JD搜索高亮显示

    Elasticsearch Elasticsearch安装 我们需要下载和安装ElasticSearch的服务端和客户端! 注意: ElasticSearch是使用java开发的,且本版本的es需要的 ...

  9. es使用pinyin搜索,对应中文没有高亮显示

    刚开始的时候,索引 article 的 mapping {"mapping":{"article":{"mappings":{"p ...

最新文章

  1. 头条面试官:NIO 是不是就是I/O多路复用?我:不是
  2. Python基础(10)--数字
  3. Servlet和JSP规范及版本对应关系
  4. oracle 字段 查找重复,oracle数据库查询重复的索引列
  5. 请郎平回归执教中国女排
  6. base64 编码 在websocket协议中的应用
  7. 抛开 Android 不谈,谁是最受欢迎的 Linux 发行版?
  8. 将图像平移到画布中心python_python-如何用猕猴桃中的图像填充画布?
  9. 数据结构之排序算法Java实现(8)—— 线性排序之计数排序算法
  10. Python机器学习房价预测 (斯坦福大学机器学习课程)
  11. 我们是这样写升级日志的,处处可以体现人文情怀
  12. 信源编码程序设计实验C语言实现,霍夫曼信源编码实验报告.docx
  13. UnityShader语法英文入门
  14. 计算机怎么看事件管理,如何打开事件查看器 win7事件查看器打开及使用方法介绍...
  15. 如何修改Tomcat的默认主页
  16. pycharm print 显示红色下划线
  17. Linux与ISCSI
  18. java获取东八区时间
  19. 重名困扰探究系列之二账户号与登录方式 中
  20. 浅学C++(3)学习C语言(电话簿)

热门文章

  1. 2021年河南高考--各高校在河南录取分数线预测(本科一批——理科):
  2. wps的计算机在哪里设置密码,怎么在电脑版WPS中修改密码?
  3. google搜索引擎用法
  4. 最新会声会影2023旗舰版更新了哪些功能?
  5. IDL数据类型之数组
  6. Groovy~Groovy的方法
  7. 数字IC小白起步(一)
  8. mtk平台的gpio控制
  9. 一、Storm是什么?
  10. Idea构建异常---Could not parse metadata xx/xx/maven-metadata-local.xml-删除文件解决不掉---SpringCloud工作笔记176