HighlightBuilder高亮显示
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高亮显示相关推荐
- 好玩的ES--第三篇之过滤查询,整合SpringBoot
好玩的ES--第三篇之过滤查询,整合SpringBoot 过滤查询 过滤查询 使用 类型 term . terms Filter ranage filter exists filter ids fil ...
- es拼音分词 大帅哥_SpringBoot集成Elasticsearch 进阶,实现中文、拼音分词,繁简体转换...
Elasticsearch 分词 分词分为读时分词和写时分词. 读时分词发生在用户查询时,ES 会即时地对用户输入的关键词进行分词,分词结果只存在内存中,当查询结束时,分词结果也会随即消失.而写时分词 ...
- es入门学习7-java-es自身API
es入门学习7-java-es自身API 使用起前面的集群环境进行学习 一. 公共的东西 1.1.项目位置 1.2.导入依赖 <dependency><groupId>org. ...
- html显示elasticsearch,ElasticSearch查询:高亮显示(10)
什么是高亮显示 根据关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮百度搜索关键字"elasticsearch" 京东商城搜索"iphone xs max ...
- ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
应用说明见代码注解. 1.简单搜索实例展示: public void search() throws IOException {// 自定义集群结点名称String clusterName = &qu ...
- Java连接Elasticsearch6.xxx 代码高亮显示篇四
1.代码高亮显示 /**** 测试代码高亮显示 * @throws Exception*/@Testpublic void heightCode() throws Exception{//1.获取客户 ...
- ElastSearch整合SpringBoot模仿京东商城实现关键字高亮显示
前提:下载Elasticsearch服务并开启,使用SpringBoot集成Elasticsearch客户端 用到的技术:Springboot+Vue+Thymeleaf+Elasticsearch ...
- Elasticsearch7.6(windows版单机版)api使用及JD搜索高亮显示
Elasticsearch Elasticsearch安装 我们需要下载和安装ElasticSearch的服务端和客户端! 注意: ElasticSearch是使用java开发的,且本版本的es需要的 ...
- es使用pinyin搜索,对应中文没有高亮显示
刚开始的时候,索引 article 的 mapping {"mapping":{"article":{"mappings":{"p ...
最新文章
- 头条面试官:NIO 是不是就是I/O多路复用?我:不是
- Python基础(10)--数字
- Servlet和JSP规范及版本对应关系
- oracle 字段 查找重复,oracle数据库查询重复的索引列
- 请郎平回归执教中国女排
- base64 编码 在websocket协议中的应用
- 抛开 Android 不谈,谁是最受欢迎的 Linux 发行版?
- 将图像平移到画布中心python_python-如何用猕猴桃中的图像填充画布?
- 数据结构之排序算法Java实现(8)—— 线性排序之计数排序算法
- Python机器学习房价预测 (斯坦福大学机器学习课程)
- 我们是这样写升级日志的,处处可以体现人文情怀
- 信源编码程序设计实验C语言实现,霍夫曼信源编码实验报告.docx
- UnityShader语法英文入门
- 计算机怎么看事件管理,如何打开事件查看器 win7事件查看器打开及使用方法介绍...
- 如何修改Tomcat的默认主页
- pycharm print 显示红色下划线
- Linux与ISCSI
- java获取东八区时间
- 重名困扰探究系列之二账户号与登录方式 中
- 浅学C++(3)学习C语言(电话簿)
热门文章
- 2021年河南高考--各高校在河南录取分数线预测(本科一批——理科):
- wps的计算机在哪里设置密码,怎么在电脑版WPS中修改密码?
- google搜索引擎用法
- 最新会声会影2023旗舰版更新了哪些功能?
- IDL数据类型之数组
- Groovy~Groovy的方法
- 数字IC小白起步(一)
- mtk平台的gpio控制
- 一、Storm是什么?
- Idea构建异常---Could not parse metadata xx/xx/maven-metadata-local.xml-删除文件解决不掉---SpringCloud工作笔记176