一开始以为es的高亮只要在dsl语句中添加一个highlight属性就够了,但结果并不是这样的,因为加上之后搜索结果并没有加上颜色样式,带有样式的结果在highlight对象中,所以需要将高亮属性值赋给搜索结果;
"highlight": { "require_field_match": false, "fields": { "*": { "pre_tags": [ "<font color='red'>" ], "post_tags": [ "</font>" ] } } },
"required_field_match"默认为true,要想实现上面的全字段高亮显示,这个属性一定要设置为false;
搜索结果如下:
"hits": [
{
"_index": "standard",
"_type": "all",
"_id": "88358",
"_score": 25.532839,
"_source": { "id": 88358,"bsyears": "2001","bsserialnumber": "SEC III D1 NMA APP S","bsorgtyperedundancy": "6","bsreleasecompany": null,"bsnoteappended": null,"bsscopeofapplication": null,"bsmodifydate": "2015-07-16T10:58:26.000Z","@version": "1","bsnotice": null,"bsreferencerelationship": null,"type": "all","bslanguages": "英语","bssubstitutesstandardredundancy": null,"bschinesesubjectwords": null,"bsenglishsubjectwords": null,"boid": "ASME","bscollection": null,"bzyptid": null,"bsprice": "0","bsstate": "ST","bsenddate": null,"bsadoptionrelationships": null,"bscountry": null,"bscode": null,"bscreationdate": "2015-07-16T10:58:26.000Z","bspublishingunit": null,"bsid": null,"bstransitiondate": null,"bsenglishname": "Appendix S Pump Shaft Design Methods","bsics": null,"bssource": "北京-201112北京全库_asme.mdb","bschinesename": "附录S.水泵轴设计法","@timestamp": "2019-01-17T11:46:13.098Z","bsfolder": null,"bsconfirmdate": null,"bspage": 0,"bsisfile": 1,"bsindexes": null,"bsstateindex": 9,"bsmemo": null,"bsnumber": "ASME SEC III D1 NMA APP S-2001","bsstatename": "现行","bsproposedunit": null,"bsisxml": null,"bsistxt": null,"bsoldname": null,"bsignoreattribute": "ASME SEC III D1 NMA APP S-2001","bstype": null,"bsreleasedate": "2001-06-30T16:00:00.000Z","bsispdf": 1,"orgid": null,"bsimplementdate": null,"bzysid": 88358,"boname": "美国机械工程师协会","bsfilepath": null,"bsfilesize": null,"bsdraftingunit": null,"bsorganizationtype": "国外标准","bsisforeign": null,"bsreviewyears": null,"bsclassify": "F69,J71","bsabolishdate": null,"bsinsteadstandardredundancy": null,"bsabstract": null},
"highlight": {
"bsnumber": [
"ASME SEC III D1 NMA APP <font color='red'>S</font>-2001"
],
"bsserialnumber": [
"SEC III D1 NMA APP <font color='red'>S</font>"
],
"bschinesename": [
"附录<font color='red'>S</font>.水泵轴设计法"
],
"bsenglishname": [
"Appendix <font color='red'>S</font> Pump Shaft Design Methods"
],
"bsignoreattribute": [
"ASME SEC III D1 NMA APP <font color='red'>S</font>-2001"
]
},
"sort": [
9
,
25.532839
]
}
highlight即高亮搜索结果对象,其属性是 名称为es 的index 的属性,值是数组;再遍历高亮结果赋值给搜索结果;
EsHitsItem<BzyStandardEntity>[] hits = resultEntity.getHits().getHits();
List<BzyStandardEntity> bzyStandardEntityList = new ArrayList<>();
for (EsHitsItem<BzyStandardEntity> esHitsItem : hits) {
EsHighlight highlight = esHitsItem.getHighlight();// EsHighlight为自建高亮结果对象,
if (null != highlight.getBsnumber() && highlight.getBsnumber().length > 0) {
esHitsItem.get_source().setBsNumber(highlight.getBsnumber()[0]);
}
if (null != highlight.getBschinesename() && highlight.getBschinesename().length > 0) {
esHitsItem.get_source().setBsChineseName(highlight.getBschinesename()[0]);
}
bzyStandardEntityList.add(esHitsItem.get_source());
}
public class EsHighlight {
private String[] bsnumber;
private String[] bschinesename;
public String[] getBschinesename() { return bschinesename; }
public void setBschinesename(String[] bschinesename) { this.bschinesename = bschinesename; }
public String[] getBsnumber() { return bsnumber; }
public void setBsnumber(String[] bsnumber) { this.bsnumber = bsnumber; }
}
相关推荐
在本文中,我们将深入探讨如何使用Elasticsearch 5.5.2的Java API来实现搜索结果的高亮显示和搜索建议。Elasticsearch是一个强大的分布式搜索引擎,它提供了丰富的搜索功能,包括全文检索、结构化搜索、分析以及实时...
本压缩包文件"Java API整合ES实现深分页,高亮等操作.zip"可能包含了一个Java应用程序,该程序展示了如何使用Java API来实现Elasticsearch的高级功能,如深度分页和高亮显示。深度分页是指在大数据量下,能够有效地...
基于Es分词搜索的高亮展示
在本项目中,我们主要探讨的是一个利用Vue.js前端框架和SpringBoot后端框架搭建的博客系统,这个系统受到了dblog项目的启发,并且具有Markdown编辑器支持、Elasticsearch(ES)集成以及搜索高亮功能。以下是这个博客...
标题中的“53.(leaflet篇)leaflet线周边空间查询(ElasticSearch技术实现)”表明这个压缩包的内容是关于使用Leaflet库进行地图展示,并结合Elasticsearch进行线状地理要素的周边空间查询的教程。Leaflet是一个轻...
在本文档中,主要讨论了如何通过调整Elasticsearch(ES)中的分词模式来优化搜索结果,并实现类似京东的商品搜索功能,包括品牌统计、规格统计、条件筛选(品牌、分类过滤)、规格过滤以及价格过滤。 1. **分词模式...
3. **JavaScript库和框架**:在前端实现全文检索,常用的库有Elasticsearch的JavaScript客户端,或者直接使用像Algolia、Apache Solr等搜索服务的API。此外,Vue.js、React或Angular等前端框架可以用于构建交互式的...
3. **构建搜索引擎**:在Django中,我们可以创建一个模型来代表搜索结果,定义视图处理用户的查询请求,并调用Elasticsearch的API执行搜索。搜索结果返回后,Django视图可以进一步处理这些结果,比如按相关性排序、...
在这个名为"zjl-es-api.zip"的压缩包中,我们可以看到作者在学习ElasticSearch过程中积累的一些关键知识点,包括索引的操作、文档的管理以及一个涉及JSoup爬虫和高亮搜索功能的小型项目。 首先,关于Elasticsearch...
- **高亮显示**:实现搜索结果的关键字高亮,增强用户体验。 - **错误处理和监控**:设置合理的错误处理机制,并通过Elasticsearch的监控工具(如Cat API)监控系统状态。 5. **系统架构设计** - **微服务化**:...
+ elasticsearch(用到在整合) + redis(用到在整合) 项目编码: UTF-8 项目名称: poem 数据库名称: poem 项目中包结构: src/main/java com.baizh.xxx .util 工具包 .entity 实体类 .dao ...
基于SpringBoot+MyBaties+Thymeleaf+... ElasticSearch 作为本站的站内搜索框架,支持分词检索数据和关键词高亮。 前台页面 采用模板之家中的一部分+博客模板, 后台模板 采用 AdminLte 的模板(基于BootStrap的)。
本课程基于Java开发,通过项目案例的方式讲解Elasticsearch分布式搜索引擎(Elasticsearch索引)中的核心技术,ElasticSearch版本是目前稳定版本,学员学习本课程以后可以初级实现类似百度新闻搜索项目。 Elastic...
开发者可以深入研究如何在SpringBoot中配置Elasticsearch客户端,如何使用Java操作ES索引,以及如何在Vue.js中进行API调用,构建前端页面等。 5. **毕业设计**: 这个标签暗示这个项目可能是一个学生毕业设计作品...
8. **高亮显示**:在搜索结果中,可以使用Elasticsearch的高亮功能突出显示匹配的关键词,提高用户体验。 9. **分页与排序**:为了优化展示,搜索结果通常需要分页,用户可以选择不同大小的每页条数。同时,结果...
在社交系统中,Elasticsearch用于索引和搜索用户的动态、帖子、评论等内容,提供高效的搜索体验,支持关键词高亮、相关性排序等功能。 五、Redis6:高性能的键值存储 Redis6是一个内存高速缓存数据库,支持多种数据...
使用Spring Data集成全文搜索搜索引擎ElasticSearch,实现文章信息的快速搜索和关键字的高亮显示。 前台前端使用HTTP客户端Axios进行异步请求,使用Vue完成数据的绑定和渲染,实现前后端的半分离。 前台静态页面来自...
通过集成Elasticsearch等搜索引擎,可以实现全文检索,支持模糊匹配和关键词高亮显示。同时,结合机器学习算法(如协同过滤、基于内容的推荐),系统能够根据用户的浏览历史和偏好,提供个性化推荐,进一步优化用户...
为了提高性能,可以考虑使用全文索引或其他搜索引擎服务(如Elasticsearch或Sphinx)来加速搜索。此外,可以添加更多的前端样式和交互设计,以提高用户体验。 综上所述,通过PHP和简单的字符串处理,我们可以实现站...