高亮 highlight | 学习笔记

简介: 快速学习高亮 highlight

开发者学堂课程【ElasticSearch 入门精讲高亮 highlight学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/631/detail/9997


高亮 highlight


内容介绍:

一、讲义

二、演示


一、讲义

高亮达到的效果可以通过搜索 elasticsearch 进行查看

image.png

查询索引库的时候会有高亮显示

public void testSearch() {

String indices="bigdata";//指的是要搜索的哪一个索引库

SearchRequestBuilder builder=client.prepareSearch(indices)

.setSearchType(SearchType.DEFAULT)

.setFrom(0)

.setsize(5)//设置分页

.addHigh1ightedFie1d("name")//设置高亮字段

.setHighlighterPreTags("<font style='color:red;size=35'>")

.setHighlighterPostTags("</font>");//高亮风格

builder.setQuery(QueryBuilders.fuzzyquery("name","hadoop"));

SearchResponse searchResponse=builder.get();

SearchHits searchHits=searchResponse.getHits();

SearchHit[] hits=searchHits.getHits();

long total=searchHits.getTotalHits();

System.out.printIn("总共条数: "+total);//总共查询到多少条数据

for (SearchHit searchHit:hits){

Map<string,object>source=searchHit.getsource();

Map<string,HighlightField>highlightFields=searchHit.getHighlightFields();

System.out.printIn("------------------");

String name=source.get("name").tostring();

String author=source.get("author").tostring();

System.out.printIn("name="+name);

System.out.printIn("author="+author);

HighlightField highlightField= highlightFields.get("name");

if(highlightField!=null){

Text[] fragments=highlightField.fragments();

name="";

for(Text text:fragments){

name += text.tostring();

}

}

System.out.printInC"name: "+name);

System.out.printIn("author: "+author);

}

}

二、演示

现在要将检索信息 bank 下的 product,name 开头为 s 的显示高亮

如何进行高亮显示?

在桌面上右击新建文本文档,命名为 testHightLight.html,之后编辑输入

<h2>测试<font style="color:red;size=20;" >高亮</font>显示了哦</h2>

之后通过浏览器打开页面

image.png

程序的高亮显示,在 TestES.java 中输入

/**

*测试高亮显示

*

*查询索引库之 bigdata 下的 type 之 product,其中 name 字段中以 s 开头的字段需要高亮显示

*/

public void testHightLighter(){

//步骤:

//1.构建 HighlightBuilder 的实例,设置高亮显示的参数

HightlightBuilder hb = new HighlightBuilder();

hb.field("name"")

.preTags("<font stype='color:red;size=20;>"")

.postTags("</font>");

//2.查询

SearchResponse response = client.prepareSearch(INDEX)

.setTypes( TYPE)

.setFrom(0)

.setSize(1000)

.setQuery(QueryBuilders.wildcardQuery(name: "name", query: s*"))

//设置高亮显示

.highlighter(hb)

.get();

//3.分析结果

for(SearchHit hit: response.getHits()){

Map<String,Object> map = hit.getSourceAsMap();  Map<String,HighlightField> highlightFields = hit.getHighlightFields();

for(Map.Entry<String,HighlightField> fieldEntry: highlightFields.entrySet())Xstring key = fieldEntry.getKey0;

String value = fieldEntry.getValue().fragments()[0].toString();

//替换value(带了高亮显示)

map.put(key,value);

}

//显示

System.out.println(JSON.toJSONString(map));

}

}

运行之后结果应该显示出三个带 s 的 name,

如图

image.png

相关文章
如何进行有效的业务影响分析(BIA)?
如何进行有效的业务影响分析(BIA)?
879 1
|
存储 SQL 运维
OLAP数据库选型指南:Doris与ClickHouse的深入对比与分析
OLAP数据库选型指南:Doris与ClickHouse的深入对比与分析
|
消息中间件 数据挖掘 程序员
【建议收藏】高并发下的分布式事务:如何选择最优方案?
本文介绍了分布式事务的三种常见解决方案。在分布式系统中,事务处理变得复杂,需确保ACID特性。TCC(Try-Confirm-Cancel)方案适用于严格资金要求的场景,如银行转账,通过预留、确认和取消步骤确保一致性。可靠消息最终一致性方案适合一致性要求较低的场景,如电商积分处理,通过消息中间件实现最终一致性。最大努力通知方案则用于允许不一致的场景,如数据分析,通过重复通知尽可能达成一致性。选择合适的方案取决于具体应用场景。
686 5
|
人工智能 IDE Java
MarsCode AI 一款免费的代码辅助工具,值得一试
MarsCode是由字节跳动旗下公司推出的AI编程工具,旨在提升编码效率和质量。它既是一个云端集成开发环境(IDE),也支持作为VS Code和JetBrains等IDE的智能扩展,提供代码补全、生成、优化等功能,并支持多种编程语言。通过AI助手,MarsCode帮助开发者减少重复劳动,提高代码质量和可维护性,同时支持跨平台使用,为开发者带来便捷高效的编程体验。
2094 1
|
存储 负载均衡 算法
Hash介绍与应用详解
哈希算法在计算机科学中有着广泛而重要的应用,从数据存储、数据完整性校验到密码安全和分布式系统中的负载均衡,哈希函数都发挥着关键作用。通过本文的介绍和示例代码,希望您能更好地理解哈希的基本概念和实际应用,并在您的项目中有效地应用这些知识。
2175 3
|
JavaScript 前端开发 Linux
Node.js安装与配置
`Node.js` 是一个基于 `Chrome V8` 引擎的 `JavaScript` 运行环境,它允许开发者使用 `JavaScript` 编写服务器端代码。以下是 `Node.js` 的安装与配置的详细步骤:
606 0
Node.js安装与配置
|
存储 运维 监控
Java中的实时日志分析与可视化
Java中的实时日志分析与可视化
|
Java
【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
1021 0
|
存储 自然语言处理 Python
数字编码与字符编码:解锁编程世界的基石
数字编码与字符编码是计算机科学的基础,它们使得计算机能够理解和处理复杂的信息。通过深入了解这些编码系统,我们不仅可以更好地设计和实现软件应用,还可以在技术面试中脱颖而出。实际编程实践,如在Python中处理文本编码,可以进一步加深我们对这些概念的理解。无论你是寻求提升编程技能,还是准备技术面试,掌握数字和字符编码都是不可或缺的。
337 2