如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现(上)

简介: 如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现

Spring Cloud 是一个基于 Spring Boot 的微服务框架,它提供了一系列组件和工具,方便开发人员快速搭建和管理分布式系统。Elasticsearch 是一个开源的全文搜索引擎,也是一个分布式、高可用的 NoSQL 数据库。本篇博客将详细讲解如何使用 Spring Cloud 搭建 Elasticsearch,并介绍如何在 Spring Cloud 微服务中使用 Elasticsearch 进行数据存储和检索。

一、Elasticsearch 简介

Elasticsearch 是一个基于 Lucene 的分布式搜索引擎,它提供了实时分析、搜索、建议和聚合功能。它能够快速地存储、搜索和分析大量结构化和非结构化数据,并且具有高可用性和可伸缩性。Elasticsearch 提供了一个 RESTful API,可以通过 HTTP 协议进行访问和操作。

二、Spring Cloud 简介

Spring Cloud 是基于 Spring Boot 的微服务框架,它提供了一系列组件和工具,包括服务注册与发现、配置管理、负载均衡、熔断器、分布式追踪等,可以快速搭建和管理分布式系统。Spring Cloud 支持多种开源组件,包括 Netflix OSS、Consul、Zookeeper、Eureka 等。

三、Spring Cloud 搭建 Elasticsearch

在 Spring Cloud 微服务中使用 Elasticsearch,需要先进行 Elasticsearch 的安装和配置。下面将介绍如何在 Windows 环境下安装 Elasticsearch。

3.1安装 Elasticsearch

首先需要从 Elasticsearch 官网下载 Elasticsearch 的安装包,下载地址为:www.elastic.co/downloads/e… Windows 10 为例。

下载完成后,解压缩安装包,进入解压后的文件夹,找到 bin 目录下的 elasticsearch.bat 文件,双击运行该文件。在启动 Elasticsearch 之前,需要先修改一些配置。打开 config 目录下的 elasticsearch.yml 文件,修改以下几个配置:

cluster.name: my-application
node.name: node-1
path.data: D:\elasticsearch\data
path.logs: D:\elasticsearch\logs

其中,cluster.name 表示集群的名称,可以自定义;node.name 表示节点的名称,也可以自定义;path.data 和 path.logs 分别表示 Elasticsearch 数据和日志的存储路径。

修改完成后,保存并关闭 elasticsearch.yml 文件。然后再次双击运行 elasticsearch.bat 文件,等待 Elasticsearch 启动完成。启动成功后,在浏览器中输入 http://localhost:9200/,可以看到 Elasticsearch 的基本信息。


3.2 使用 Spring Boot 集成 Elasticsearch

使用 Spring Boot 集成 Elasticsearch,需要添加 Elasticsearch 的依赖。在 pom.xml 文件中添加以下依赖:

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

添加依赖后,需要在 application.yml 文件中配置 Elasticsearch 的连接信息,如下所示:

spring:
  data:
    elasticsearch:
      cluster-name: my-application
      cluster-nodes: localhost:9300

其中,cluster-name 和上面在 Elasticsearch 中配置的 cluster.name 相对应,cluster-nodes 表示 Elasticsearch 的节点地址和端口号。

使用 Spring Data Elasticsearch,可以很方便地进行数据的增删改查操作。只需要定义一个实体类,并继承 ElasticsearchRepository 接口即可。例如,定义一个 Book 实体类:

@Document(indexName = "book")
public class Book {
    @Id
    private String id;
    private String title;
    private String author;
    // getter 和 setter 方法省略
}

其中,@Document 注解用于指定 Elasticsearch 中的索引名称,@Id 注解用于指定实体类中的 ID 属性。

定义完实体类后,可以在其对应的 Repository 接口中定义增删改查方法,例如:

public interface BookRepository extends ElasticsearchRepository<Book, String> {
    List<Book> findByTitle(String title);
    List<Book> findByAuthor(String author);
}

这样就可以通过调用 BookRepository 中的方法进行数据的增删改查操作了。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
11月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
740 3
|
11月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
964 0
第07课:Spring Boot集成Thymeleaf模板引擎
|
11月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
1051 2
|
11月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
568 2
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
320 0
|
11月前
|
存储 人工智能 Java
Springboot集成AI Springboot3 集成阿里云百炼大模型CosyVoice2 实现Ai克隆语音(未持久化存储)
本项目基于Spring Boot 3.5.3与Java 17,集成阿里云百炼大模型CosyVoice2实现音色克隆与语音合成。内容涵盖项目搭建、音色创建、音频合成、音色管理等功能,适用于希望快速掌握Spring Boot集成语音AI技术的开发者。需提前注册阿里云并获取API Key。
|
SQL 关系型数据库 MySQL
SpringBoot自定义配置注入的方式:自定义配置文件注入,从mysql读取配置进行注入
SpringBoot自定义配置注入的方式:自定义配置文件注入,从mysql读取配置进行注入
712 0
|
Java 数据库连接 Maven
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
326 1
|
Java 数据库连接 Spring
面试题:springboot的自定义配置有哪些
面试题:springboot的自定义配置有哪些
248 0