当前位置: 首页 > 图灵资讯 > 技术篇> Spring Boot 整合ElasticSearch

Spring Boot 整合ElasticSearch

来源:图灵教育
时间:2023-12-04 16:34:58

Spring Boot 集成Elasticsearch前言

随着互联网的快速发展,数据量不断扩大,如何高效快速地检索数据已成为企业迫切需要解决的问题。Elasticsearch 它是一种高效、灵活、可扩展的分布式搜索引擎,具有优异的数据检索能力,广泛应用于各个领域。本文将介绍如何将 Elasticsearch 与 Spring Boot 为了提高数据检索效率,集成。

摘要

本文主要介绍 Elasticsearch 基本特征和 Spring Boot 整合 Elasticsearch 的方法。首先,本文介绍了它 Elasticsearch 详细描述了基本原理和特点 Elasticsearch 各种数据类型、数据检索方法等特点。其次,本文解释了如何使用它 Spring Boot 整合 Elasticsearch,对于 Spring Boot 集成 Elasticsearch ,本文从搭建 Elasticsearch 环境、使用 Elasticsearch 客户端,写作 Elasticsearch 详细讲解相关界面和测试,帮助读者深入了解 Spring Boot 整合 Elasticsearch。最后,本文还介绍了它 Elasticsearch 应用场景案例, Elasticsearch 整合 Spring Boot 分析了优缺点。

简介

Elasticsearch 具有高效、灵活、可扩展等特点的分布式搜索引擎。Elasticsearch 基于开源搜索库 Apache Lucene 构建,提供丰富的搜索 API,对所需数据进行快速检索,支持全文检索、模糊查询、过滤检索等。而 Spring Boot 是一个基于 Spring 开发的轻量级框架可以帮助开发人员快速构建独立的、生产级的应用程序。将 Elasticsearch 与 Spring Boot 一体化,就能充分发挥 Elasticsearch 性能优异,提高数据检索效率,为企业提供更高效的数据检索服务。

构建源代码分析 Elasticsearch 环境

在开始编写 Spring Boot 与 Elasticsearch 在集成代码之前,需要先构建 Elasticsearch 的环境。Elasticsearch 是一款基于 Java 搜索引擎,首先需要安装 Java 8 环境。接着,下载 Elasticsearch 压缩包并解压。进入 Elasticsearch 的 bin 目录,执行 Elasticsearch.bat(Windows)或 Elasticsearch(Linux)命令启动 Elasticsearch。

//下载 Elasticsearch wget安装包 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.tar.gz////解压安装包tar -zxvf elasticsearch-6.8.6.tar.gz//启动 Elasticsearch./bin/elasticsearch
使用 Elasticsearch 客户端

Elasticsearch 提供了 Java 客户端可以方便地与客户端相匹配 Elasticsearch 互动。使用 Elasticsearch 客户端,需要在 pom.xml 以下依赖添加到文件中:

<!-- Elasticsearch 客户端 --><dependency>    <groupId>org.elasticsearch.client</groupId>    <artifactId>elasticsearch-rest-high-level-client</artifactId>    <version>6.8.6</version></dependency>
编写 Elasticsearch 相关接口及测试

在 Spring Boot 项目中集成 Elasticsearch,需要创建 Elasticsearch 配置,指定 Elasticsearch 的 IP、配置信息,如端口、协议等。代码如下:

@Configurationpublic class ElasticsearchConfig {    @Bean(destroyMethod = "close")    RestHighLevelClient client() {        //创建 Elasticsearch 客户配置类        final ClientConfiguration configuration = ClientConfiguration.builder()                .connectedTo("localhost:9200")                .withConnectTimeout(Duration.ofSeconds(5))                .withSocketTimeout(Duration.ofSeconds(3))                .build();        //创建 Elasticsearch 客户端        return RestClients.create(configuration).rest();    }    @Bean    ElasticsearchRestTemplate elasticsearchTemplate() {        return new ElasticsearchRestTemplate(client());    }}

此处使用了 ElasticsearchRestTemplate,这是 Elasticsearch 官方提供的一个 Elasticsearch 操作模板类,封装 Elasticsearch 基本操作方法。使用 ElasticsearchRestTemplate,需要在 pom.xml 以下依赖添加到文件中:

<!-- Elasticsearch 操作模板类 --><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>    <version>2.5.5</version></dependency>

使用 ElasticsearchRestTemplate 执行 Elasticsearch 操作非常方便,只需将相关操作包装到方法中即可。例如,以下代码包装在基础上 ID 查询索引内容的方法:

@Componentpublic class ElasticsearchOperations {    @Autowired    private ElasticsearchRestTemplate elasticsearchTemplate;    /**     * 根据 ID 查询索引内容     *     * @param indexName 索引名称     * @param type      类型名称     * @param id        ID     * @return 索引内容     */    public String getDocument(String indexName, String type, String id) {        GetRequest getRequest = new GetRequest(indexName, type, id);        try {            GetResponse getResponse = elasticsearchTemplate.getClient().get(getRequest, RequestOptions.DEFAULT);            if (getResponse.isExists()) {                return getResponse.getSourceAsString();            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}
测试用例

在编写完 Elasticsearch 代码完成后,我们需要编写相关的测试用例进行验证 Elasticsearch 操作是否正确。以下是查询索引内容的测试用例:

@RunWith(SpringRunner.class)@SpringBootTestpublic class ElasticsearchOperationsTest {    @Autowired    private ElasticsearchOperations elasticsearchOperations;    /**     * 测试根据 ID 查询索引内容     */    @Test    public void testGetDocumentById() {        String indexName = "index_demo";        String type = "type_demo";        String id = "1";        String result = elasticsearchOperations.getDocument(indexName, type, id);        System.out.println(result);    }}
应用场景案例

Elasticsearch 它具有优异的搜索性能和数据扩展性,广泛应用于各个领域。以下是一些 Elasticsearch 企业应用场景:

  1. 日志检索:Elasticsearch 可用于日志数据的实时收集和分析,当系统出现异常时,可快速定位问题并及时解决。
  2. 搜索引擎:Elasticsearch 它可以用来构建高效的搜索引擎,帮助用户快速找到所需的信息。
  3. 电商推荐:Elasticsearch 通过分析用户行为、用户肖像等数据,可以向用户推荐个性化的商品信息。
  4. 安全监控:Elasticsearch 可用于实时监控系统安全事件,一旦发现异常事件,可及时触发安全预警。
优缺点分析优点
  1. 高性能:Elasticsearch 具有优异的搜索性能和数据扩展性,可以处理大量数据。
  2. 方便快捷:使用 Elasticsearch 客户端可以快速与客户端相匹配 Elasticsearch 互动,使用 ElasticsearchRestTemplate,它可以很容易地进行 Elasticsearch 操作。
  3. 易于扩展:Elasticsearch 支持分布式部署可以提高系统的可扩展性和可靠性。
缺点
  1. 学习成本高:Elasticsearch 使用需要掌握一定的相关知识和学习成本。
  2. 复杂性高:Elasticsearch 部署和维护需要一定的技术水平,可能需要专业技术人员进行维护。
Elasticsearchconfigigg代码介绍 类client() 方法

该方法用于创建 Elasticsearch 指定客户端 Elasticsearch 的 IP、配置信息,如端口和协议。

@Bean(destroyMethod = "close")RestHighLevelClient client() {```java//创建 Elasticsearch finallal客户端配置类别 ClientConfiguration configuration = ClientConfiguration.builder()        .connectedTo("localhost:9200")        .withConnectTimeout(Duration.ofSeconds(5))        .withSocketTimeout(Duration.ofSeconds(3))        .build();//创建 Elasticsearch 客户端return RestClients.create(configuration).rest();
ElasticsearchOperations getdocument() 方法

该方法用于基础 ID 查询索引内容。

/** * 根据 ID 查询索引内容 * * @param indexName 索引名称 * @param type      类型名称 * @param id        ID * @return 索引内容 */public String getDocument(String indexName, String type, String id) {    GetRequest getRequest = new GetRequest(indexName, type, id);    try {        GetResponse getResponse = elasticsearchTemplate.getClient().get(getRequest, RequestOptions.DEFAULT);        if (getResponse.isExists()) {            return getResponse.getSourceAsString();        }    } catch (IOException e) {        e.printStackTrace();    }    return null;}
ElasticsearchOperationsTest testgetdocumentbyId() 方法

该方法用于测试基础 ID 查询索引内容。

/** * 测试根据 ID 查询索引内容 */@Testpublic void testGetDocumentById() {    String indexName = "index_demo";    String type = "type_demo";    String id = "1";    String result = elasticsearchOperations.getDocument(indexName, type, id);    System.out.println(result);}
总结

本文主要介绍了将军 Elasticsearch 与 Spring Boot 提高数据检索效率的集成方法。首先,需要建造 Elasticsearch 环境,使用 Elasticsearch 客户端进行交互,并编写 Elasticsearch 相关接口和测试用例。第二,介绍 Elasticsearch 分析应用场景案例及优缺点。

在代码中,ElasticsearchConfig 类中的 client() 该方法用于创建 Elasticsearch 客户端,指定 Elasticsearch 的 IP、配置信息,如端口、协议;ElasticsearchOperations 类中的 getDocument() 该方法用于基础 ID 查询索引内容;ElasticsearchOperationsTest 类中的 testGetDocumentById() 该方法用于测试基础 ID 查询索引内容。

需要注意的是,因为 Elasticsearch 其功能复杂,学习成本高。部署和维护需要一定的技术水平,可能需要专业技术人员进行维护。因此,在使用中 Elasticsearch 要慎重考虑其适用性和可行性。