SpringBoot集成Elasticsearch实现博客高亮搜索

文章目录

  • 效果展示
  • 二、使用步骤
    • 1.引入maven依赖
    • 2. 编写spplication.properties
    • 3.配置客户端
    • 4.高亮搜索
    • 5.转换成实体对象
  • 总结

效果展示

虽然看起来巴适,但是挺简单的!
在这里插入图片描述


📝 英文检索

在这里插入图片描述

📝 中文单字检索
在这里插入图片描述

二、使用步骤

1.引入maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

2. 编写spplication.properties

elasticsearch.host=localhost
elasticsearch.port=9200

3.配置客户端

/*** 配置客户端* @author BreezAm*/
@Data
@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
public class EsConfig extends AbstractElasticsearchConfiguration {private String host;private int port;@Overridepublic RestHighLevelClient elasticsearchClient() {RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));return new RestHighLevelClient(builder);}
}

4.高亮搜索

/*** 文章搜索** @author BreezAm* @email lx90352@163.com* @date 2021-08-15 18:05:46*/
@Service
public class EsSearchService {@Autowiredprivate RestHighLevelClient restHighLevelClient;/*** 高亮搜索** @param indices 索引名称* @param name    搜索的字段 高亮显示的字段* @param key     搜索的关键字* @return* @throws IOException*/public List<Map<String, Object>> search(String indices, String name, String key) throws IOException {List<Map<String, Object>> list = new ArrayList<>();SearchRequest request = new SearchRequest();request.indices(indices);SearchSourceBuilder builder = new SearchSourceBuilder();TermQueryBuilder queryBuilder = QueryBuilders.termQuery(name, key);HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.requireFieldMatch(false);highlightBuilder.preTags("<font color='red' size=4>");highlightBuilder.postTags("</font>");highlightBuilder.field(name);builder.highlighter(highlightBuilder);builder.query(queryBuilder);request.source(builder);SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);SearchHits hits = search.getHits();for (SearchHit hit : hits) {Map<String, Object> sourceAsMap = hit.getSourceAsMap();Map<String, HighlightField> fields = hit.getHighlightFields();HighlightField title = fields.get(name);if (title != null) {Text[] fragments = title.getFragments();String t = "";for (Text text : fragments) {t = text + t;}sourceAsMap.put(name, t);}list.add(sourceAsMap);}return list;}
}

5.转换成实体对象

private List<Article> getArticles(String key) throws IOException {List<Article> list = new ArrayList<>();List<Map<String, Object>> search = esSearchService.search("article", "title", key);for (Map<String, Object> map : search) {Article article = new Article();article.setId(Integer.valueOf(map.get("id").toString()));article.setTitle(map.get("title").toString());article.setCoverUrl(map.get("coverUrl").toString());article.setContent(map.get("content").toString());article.setPublishDate(stringToDate(map.get("publishDate").toString()));article.setReadNum(Integer.valueOf(map.get("readNum").toString()));article.setCommentNum(Integer.valueOf(map.get("commentNum").toString()));article.setSummary(map.get("summary").toString());list.add(article);}return list;}

总结

本文简单实现了Elasticsearch的一个应用场景,其中还有些问题,那就是对中文只能单字搜索,英文可以进行单词检索,如果要对中文进行多字检索,那就需要使用中文分词器,推荐一款中文分词器:elasticsearch-analysis-ik

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘系技术,实力为2019年双11而战!稳!

2019 天猫双 11 全球狂欢节96秒成交额破百亿&#xff0c;24小时总成交额2684亿&#xff0c;创造了交易创建峰值 54.4万笔&#xff0f;秒的历史记录。天猫双11&#xff0c;已经不仅是购物节&#xff0c;也是品牌成长节、消费者互动节。天猫双11更是是商业的奥林匹克。 今年&…

上班从不迟到,生病不敢请假,加班唯命是从,明明已经很拼命了,为什么还是缺钱?...

为了省几百块钱房租&#xff0c;每天在路上多花两三个小时&#xff1b;为了少花几毛钱&#xff0c;买包纸巾也要货比三家&#xff1b;被上司大声指责&#xff0c;为了保住饭碗&#xff0c;只能陪着笑脸......上班从不迟到&#xff0c;生病不敢请假&#xff0c;加班唯命是从&…

RuoYi-Cloud 部署篇_02(linux环境 mysql+nginx版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 部署资料整合2.2. 模块端口划分2.3. 组件端口划分2.4. 服务脚本编写2.5. 前端编译生产…

Flink State 有可能代替数据库吗?

有状态的计算作为容错以及数据一致性的保证&#xff0c;是当今实时计算必不可少的特性之一&#xff0c;流行的实时计算引擎包括 Google Dataflow、Flink、Spark (Structure) Streaming、Kafka Streams 都分别提供对内置 State 的支持。State 的引入使得实时应用可以不依赖外部数…

简易投票系统数据库设计

介绍 简易版的投票系统数据库设计. 发现设计有误请在评论区指出&#xff0c;谢谢&#xff01; 一、截图 项目表 选项表 投票表 二、代码 票表 CREATE TABLE as_ticket (id varchar(64) NOT NULL COMMENT 主键,title varchar(100) DEFAULT NULL COMMENT 投票标题,descr…

万级规模 K8s 如何管理?蚂蚁双11核心技术公开

阿里妹导读&#xff1a;Kubernetes 大幅降低了容器化应用部署的门槛&#xff0c;并以其超前的设计理念和优秀的技术架构&#xff0c;在容器编排领域拔得头筹。越来越多的公司开始在生产环境部署实践。本文将分享蚂蚁金服是如何有效可靠地管理大规模 Kubernetes 集群的&#xff…

定了!2020年,6种将死的编程语言!

编程界语言排行榜又要面临一次全新的洗牌&#xff0c;六大编程语言将要黄了&#xff01;此消息一出&#xff0c;令众多程序员心碎&#xff01;那么这将“亡”的六大语言中有你所擅长的吗&#xff1f;Perl&#xff0c;Haskell&#xff0c;Ruby&#xff0c;Visual Basic.NET&…

RuoYi-Cloud 部署篇_03(linux环境 Mysql+nginx版本)

文章目录一、localhost无法路由1. nacos控制台2. sentinel控制台3. admin控制台二、思路分析2.1. 现象分析2.2. 原因分析2.3. 解决思路三、解决方案&#xff08;第一种&#xff09;3.1. 调整路由url3.2. 效果验证四、解决方案解决方案&#xff08;第二种&#xff09;4.1. 域名分…

论坛系统数据库设计

论坛系统数据库设计 文章目录论坛系统数据库设计前言一、社区论坛是什么&#xff1f;二、设计表1.用户表2.Token表3. 文章表4. 话题表5. 问题表6. 评论表7. 投票表8. 回答表9. 举报表10. 话题关系对应表11. 通知表12. 私信表13. 关注关系表14. 图片表15. 设置表16. 缓存表总结前…

阿里文娱首次公开!AI 如何对爆款内容未卜先知?

阿里妹导读&#xff1a;文娱内容很难有完整的量化指标体系&#xff0c;内容的复杂性决定了文娱产品的不确定性。我们如何利用AI大数据能力&#xff0c;建造文娱的内容认知大脑&#xff1f;串联内容全生命周期&#xff0c;实现对内容、流量、宣推等的“未卜先知”&#xff0c;提…

Sentinel 1.7.0 发布,支持 Envoy 集群流量控制

流控降级中间件 Sentinel 1.7.0 版本正式发布&#xff0c;引入了 Envoy 集群流量控制支持、properties 文件配置、Consul/Etcd/Spring Cloud Config 动态数据源适配等多项新特性与改进。详细特性列表请参考 Release Notes&#xff0c;欢迎大家使用并提出建议。 下面我们来一起…

RuoYi-Cloud 部署篇_02(windows环境 mysql版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 配置 idea的 RunDashboard2.2. 运行后端三、部署前端3.1. 安装依赖3.2. 运行前端6.3. …

运维老哥必须知道的Linux系统文件目录组织结构

夫陶公清风千古&#xff0c;余又何人&#xff0c;敢称庶几 文章目录介绍Linux目录结构Linux文件和目录管理绝对路径和相对路径绝对路径相对路径yum包管理介绍 Linux目录结构 &#x1f4a1; Linux文件系统的目录结构为树状结构&#xff0c;其中根目录为一个斜杠&#xff1a;/…

云原生下日志方案的架构设计

上一篇中我们介绍了为什么需要一个日志系统、为什么云原生下的日志系统如此重要以及云原生下日志系统的建设难点&#xff0c;相信DevOps、SRE、运维等同学看了是深有体会的。本篇文章单刀直入&#xff0c;会直接跟大家分享一下如何在云原生的场景下搭建一个灵活、功能强大、可靠…

不知道路由器工作原理?没关系,来这看看!看不懂你捶我 | 原力计划

作者 | 北海以北没有小王头图 | CSDN付费下载自视觉中国来源 | CSDN博客路由器概述首先我们先大致了解一下路由器的大致结构以及工作方式。路由器体系结构路由器体系结构如下图&#xff1a;其中四个重要组成部分依次如下&#xff1a;1. 接入端口将一条输入的物理链路与路由器相…

RuoYi-Cloud 部署篇_03(windows环境 mysql版本)

文章目录一、软件启动1. redis2. nacos3. myqsl二、微服务启动2.1. 认证授权中心启动2.2. 若依网关启动2.3. 系统模块启动2.4. 定时任务模块启动2.5. 监控中心启动2.6. 代码生成模块启动2.7. 前端启动三、测试验证3.1. 系统模块3.2. 定时任务3.3. 代码生成3.4. sentinel控制台3…

闲鱼推荐,让智能计算从云走向端

关键词&#xff1a; 智能推荐、特征工程、特征处理。 术语解释&#xff1a; 机器学习&#xff08;Machine Learning&#xff09;&#xff1a;是关于在计算机上从数据中产生“模型”(model)的算法&#xff1b;数据集&#xff08;Data Set&#xff09;&#xff1a;一组记录的集…

mybatis plus实现多表分页条件查询

文章目录前言一、二、如何实现1 配置mybatis plus分页插件2.准备三张表2.1 学生表2.2 老师表2.3 老师和学生Vo表3. 编写SQL语句4. 编写mapper层5. service层6.controller层演示效果【补充】 XML 自定义分页总结前言 没啥可说的 一、 没啥可说的 二、如何实现 1 配置mybatis pl…

神仙在双11晚上,都干了些啥?

11月&#xff0c;阿里巴巴西溪园区夜凉如水&#xff0c;双11作战室内&#xff0c;却有人身着短袖衬衫&#xff0c;只见她屏住呼吸&#xff0c;握紧微微出汗的手心&#xff0c;静静立于数字大屏前&#xff0c;等待今年最重要的一个数据。 距离双11结束&#xff0c;还有1分钟。 …

nginx(windows环境安装)

介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;并在一个BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 文章…