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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这一篇介绍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高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
22天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
70 5
|
1月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
42 2
|
1月前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
40 1
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
102 2
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
203 1
|
2月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
34 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
2月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
38 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
2月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
162 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
2月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
37 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
2月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
223 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。