Spring Boot系列(十)Spring Boot整合Elasticsearch全文搜索引擎

简介: 这一篇介绍Spring Boot整合Elasticsearch全文搜索引擎,需要springboot实战完整视频教程的,点击这里!Elastic Search是一个开源的,分布式,实时搜索和分析引擎。

这一篇介绍Spring Boot整合Elasticsearch全文搜索引擎,需要springboot实战完整视频教程的,点击这里!

Elastic Search是一个开源的,分布式,实时搜索和分析引擎。Spring Boot为Elasticsearch及Spring Data Elasticsearch提供的基于它的抽象提供了基本的配置。Spring Boot提供了一个用于聚集依赖的spring-boot-starter-data-elasticsearch 'StarterPOM'。

引入spring-boot-starter-data-elasticsearch依赖,在pom.xml配置文件中增加如下内容(基于之前章节“Spring Boot 构建框架”中的pom.xml文件):

org.springframework.boot

spring-boot-starter-data-elasticsearch

可以像其他Spring beans那样注入一个自动配置的ElasticsearchTemplate或Elasticsearch客户端实例。默认情况下,该实例将尝试连接到一个本地内存服务器(在Elasticsearch项目中的一个NodeClient),但可以通过设置spring.data.elasticsearch.clusterNodes为一个以逗号分割的host:port列表来将其切换到一个远程服务器(比如,TransportClient)。

@Component

publicclass MyBean {

privateElasticsearchTemplatetemplate;

@Autowired

public MyBean(ElasticsearchTemplate template) {

this.template=template;

}

// ...

}

如果添加一个自己的ElasticsearchTemplate类型的@Bean,它将替换默认的。

应用集成ElasticSearch案例

新建elasticsearch.properties配置文件,添加如下配置内容:

elasticsearch.host=localhost

elasticsearch.port=9300

ElasticSearch配置,读取elasticsearch.properties配置文件信息,具体代码如下:

@Configuration@PropertySource(value ="classpath:elasticsearch.properties")

@EnableElasticsearchRepositories(basePackages ="co.paan.repository")

publicclass ElasticsearchConfiguration {

@Resource

privateEnvironment environment;

@Bean

public Client client() {

TransportClient client =newTransportClient();

TransportAddress address =newInetSocketTransportAddress(environment.getProperty("elasticsearch.host"), Integer.parseInt(environment.getProperty("elasticsearch.port")));

client.addTransportAddress(address);

returnclient;

}

@BeanpublicElasticsearchOperations elasticsearchTemplate() {

returnnewElasticsearchTemplate(client());

}

}

两个实体类,具体代码如下:

@Document(indexName ="post",type="post", shards =1, replicas =0)

publicclassPost {

@Id

privateStringid;

privateStringtitle;

@Field(type= FieldType.Nested)

privateList tags;

publicStringgetId() {

returnid;

}

publicvoidsetId(Stringid) {

this.id = id;

}

publicStringgetTitle() {

returntitle;

}

publicvoidsetTitle(Stringtitle) {

this.title = title;

}

publicList getTags() {

returntags;

}

publicvoidsetTags(List tags) {

this.tags = tags;

}

}

publicclassTag {

privateStringid;

privateStringname;

publicStringgetId() {

returnid;

}

publicvoidsetId(Stringid) {

this.id = id;

}

publicStringgetName() {

returnname;

}

publicvoidsetName(Stringname) {

this.name = name;

}

}

数据源继承ElasticsearchRepository类,封装接口代码如下:

publicinterface PostRepository extends ElasticsearchRepository{

Page findByTagsName(String name, Pageable pageable);

}

数据服务接口及实现类,代码如下:

publicinterface PostService {

Post save(Post post);

Post findOne(String id);

Iterable findAll();

Page findByTagsName(String tagName, PageRequest pageRequest);

}

@Servicepublicclass PostServiceImpl implements PostService{

@Autowired

privatePostRepository postRepository;

@Override

public Post save(Post post) {

postRepository.save(post);

returnpost;

}

@OverridepublicPost findOne(String id) {

returnpostRepository.findOne(id);

}

@OverridepublicIterable findAll() {

returnpostRepository.findAll();

}

@OverridepublicPage findByTagsName(String tagName, PageRequest pageRequest) {

returnpostRepository.findByTagsName(tagName, pageRequest);

}

}


工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
存储 JSON Java
993 0
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
3961 1
|
自然语言处理 监控 数据可视化
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
1148 0
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
1194 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
1078 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
10月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1190 3
|
10月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
660 4
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
1037 0
第07课:Spring Boot集成Thymeleaf模板引擎