Spring Boot中的Elasticsearch自动配置

news/2024/10/23 7:36:49/

Spring Boot中的Elasticsearch自动配置

Elasticsearch是一个基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序中轻松地使用Elasticsearch。

本文将介绍Spring Boot中的Elasticsearch自动配置的作用、原理和使用方法。首先,我们将了解Elasticsearch自动配置的作用,然后深入探讨它的原理和如何使用它。

在这里插入图片描述

1. Elasticsearch自动配置的作用

使用Elasticsearch自动配置可以帮助我们轻松地集成Elasticsearch,并提供一些默认的配置,例如连接池、序列化方式、重试机制等,使我们可以更加专注于业务逻辑的实现。

Elasticsearch自动配置为我们提供了一系列简单易用的API,用于实现Elasticsearch的各种操作,例如创建索引、添加文档、搜索、聚合等。使用Elasticsearch自动配置的好处是,它可以帮助我们更快速地集成Elasticsearch。

2. Elasticsearch自动配置的原理

在Spring Boot中,Elasticsearch自动配置是通过ElasticsearchAutoConfiguration类来实现的。该类是Spring Boot Elasticsearch Starter中的一个核心组件,用于自动配置Elasticsearch相关的Bean。

在ElasticsearchAutoConfiguration类中,我们可以看到一系列与Elasticsearch相关的Bean的定义,例如RestHighLevelClient、ElasticsearchTemplate、ElasticsearchRestTemplate等。这些Bean的定义会被自动装配到Spring应用程序中,并通过Spring IoC容器来管理和使用。

以下是ElasticsearchAutoConfiguration类的一个简化版本:

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RestHighLevelClient.class)
@AutoConfigureAfter({ ElasticsearchRestClientAutoConfiguration.class })
public class ElasticsearchAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic RestHighLevelClient elasticsearchClient(RestClientBuilderCustomizer... restClientBuilderCustomizers) throws Exception {return new RestHighLevelClient(RestClient.builder(getHostsProperties()).setHttpClientConfigCallback(config -> config.setDefaultCredentialsProvider(getCredentialsProvider())).setRequestConfigCallback(getRequestConfigCallback()).setHttpClientConfigCallback(httpClientBuilder -> {for (RestClientBuilderCustomizer customizer : restClientBuilderCustomizers) {customizer.customize(httpClientBuilder);}}));}@Bean@ConditionalOnMissingBeanpublic ElasticsearchRestTemplate elasticsearchRestTemplate(RestHighLevelClient elasticsearchClient) {return new ElasticsearchRestTemplate(elasticsearchClient);}}

在这个类中,我们定义了一个名为elasticsearchClient的Bean,它是RestHighLevelClient类型的。这个Bean使用了一个名为getHostsProperties的方法来获取Elasticsearch主机的信息,并使用一个名为getCredentialsProvider的方法来获取凭据。这个Bean还使用一个名为getRequestConfigCallback的方法来获取请求配置回调。

我们还定义了一个名为elasticsearchRestTemplate的Bean,它是ElasticsearchRestTemplate类型的。这个Bean使用了名为elasticsearchClient的Bean作为构造函数参数。

3. Elasticsearch自动配置的使用方法

在Spring Boot中,我们可以通过引入Spring Boot Elasticsearch Starter来使用Elasticsearch自动配置。以下是一个简单的示例:

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

在引入Starter之后,我们需要在application.yml或application.properties中配置Elasticsearch相关的属性,例如:

spring:elasticsearch:rest:uris: http://localhost:9200

在配置完成之后,我们就可以通过自动装配的RestHighLevelClient Bean来进行Elasticsearch相关的操作。以下是一个简单的示例:

@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;public List<Book> searchBooks(String query) {Query searchQuery = new NativeSearchQueryBuilder().withQuery(Query# Spring Boot中的Elasticsearch自动配置Elasticsearch是一个基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序中轻松地使用Elasticsearch。本文将介绍Spring Boot中的Elasticsearch自动配置的作用、原理和使用方法。首先,我们将了解Elasticsearch自动配置的作用,然后深入探讨它的原理和如何使用它。## 1. Elasticsearch自动配置的作用使用Elasticsearch自动配置可以帮助我们轻松地集成Elasticsearch,并提供一些默认的配置,例如连接池、序列化方式、重试机制等,使我们可以更加专注于业务逻辑的实现。Elasticsearch自动配置为我们提供了一系列简单易用的API,用于实现Elasticsearch的各种操作,例如创建索引、添加文档、搜索、聚合等。使用Elasticsearch自动配置的好处是,它可以帮助我们更快速地集成Elasticsearch。## 2. Elasticsearch自动配置的原理在Spring Boot中,Elasticsearch自动配置是通过ElasticsearchAutoConfiguration类来实现的。该类是Spring Boot Elasticsearch Starter中的一个核心组件,用于自动配置Elasticsearch相关的Bean。在ElasticsearchAutoConfiguration类中,我们可以看到一系列与Elasticsearch相关的Bean的定义,例如RestHighLevelClientElasticsearchTemplateElasticsearchRestTemplate等。这些Bean的定义会被自动装配到Spring应用程序中,并通过Spring IoC容器来管理和使用。以下是ElasticsearchAutoConfiguration类的一个简化版本:```java
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RestHighLevelClient.class)
@AutoConfigureAfter({ ElasticsearchRestClientAutoConfiguration.class })
public class ElasticsearchAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic RestHighLevelClient elasticsearchClient(RestClientBuilderCustomizer... restClientBuilderCustomizers) throws Exception {return new RestHighLevelClient(RestClient.builder(getHostsProperties()).setHttpClientConfigCallback(config -> config.setDefaultCredentialsProvider(getCredentialsProvider())).setRequestConfigCallback(getRequestConfigCallback()).setHttpClientConfigCallback(httpClientBuilder -> {for (RestClientBuilderCustomizer customizer : restClientBuilderCustomizers) {customizer.customize(httpClientBuilder);}}));}@Bean@ConditionalOnMissingBeanpublic ElasticsearchRestTemplate elasticsearchRestTemplate(RestHighLevelClient elasticsearchClient) {return new ElasticsearchRestTemplate(elasticsearchClient);}}

在这个类中,我们定义了一个名为elasticsearchClient的Bean,它是RestHighLevelClient类型的。这个Bean使用了一个名为getHostsProperties的方法来获取Elasticsearch主机的信息,并使用一个名为getCredentialsProvider的方法来获取凭据。这个Bean还使用一个名为getRequestConfigCallback的方法来获取请求配置回调。

我们还定义了一个名为elasticsearchRestTemplate的Bean,它是ElasticsearchRestTemplate类型的。这个Bean使用了名为elasticsearchClient的Bean作为构造函数参数。

3. Elasticsearch自动配置的使用方法

在Spring Boot中,我们可以通过引入Spring Boot Elasticsearch Starter来使用Elasticsearch自动配置。以下是一个简单的示例:

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

在引入Starter之后,我们需要在application.yml或application.properties中配置Elasticsearch相关的属性,例如:

spring:elasticsearch:rest:uris: http://localhost:9200

在配置完成之后,我们就可以通过自动装配的RestHighLevelClient Bean来进行Elasticsearch相关的操作。以下是一个简单的示例:

@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;public List<Book> searchBooks(String query) {Query searchQuery = new NativeSearchQueryBuilder().withQuery(Query.builders.queryStringQuery(query)).build();return elasticsearchTemplate.queryForList(searchQuery, Book.class);
}

在这个示例中,我们使用了ElasticsearchRestTemplate Bean来执行搜索操作。我们通过构建一个NativeSearchQueryBuilder对象来构建查询,并将其传递给queryForList方法来执行搜索操作。查询结果会被自动映射到Book对象中,并返回一个Book对象列表。

除了搜索操作之外,Spring Boot中的Elasticsearch自动配置还提供了一系列其他的API,例如创建索引、添加文档、删除文档、聚合等。

以下是一个简单的示例,用于向Elasticsearch添加一个文档:

@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;public void addBook(Book book) {IndexQuery indexQuery = new IndexQueryBuilder().withObject(book).build();elasticsearchTemplate.index(indexQuery);
}

在这个示例中,我们使用了IndexQueryBuilder来构建一个IndexQuery对象,并将其传递给index方法来将一个Book对象添加到Elasticsearch中。

4. 总结

Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序中轻松地使用Elasticsearch。本文介绍了Elasticsearch自动配置的作用、原理和使用方法。我们了解到,Elasticsearch自动配置可以帮助我们轻松地集成Elasticsearch,并提供一些默认的配置,例如连接池、序列化方式、重试机制等,使我们可以更加专注于业务逻辑的实现。使用Elasticsearch自动配置的好处是,它可以帮助我们更快速地集成Elasticsearch,并提供一系列简单易用的API,用于实现Elasticsearch的各种操作。

如果您正在开发一个基于Spring Boot的应用程序,并希望使用Elasticsearch来实现全文搜索功能,那么Spring Boot中的Elasticsearch自动配置是您的一个不错的选择。


http://www.ppmy.cn/news/677702.html

相关文章

【Echarts系列】— echarts饼图、圆环图配置代码图文详解

前言 简介&#xff1a;本文将从头开始&#xff0c;带你快速上手 echarts最常用图例—饼图 准备&#xff1a;请自行先将echarts图例引入你的项目&#xff0c;本文不多介绍。&#xff08;引入 echarts教程&#xff1a;http://t.csdn.cn/mkTa4&#xff09; 心得&#xff1a;echar…

MTK6763平台手机 在国外无法成功注册VOLTE。求解

MTK6763平台手机 在国外无法成功注册VOLTE。求解 修改了Build.prop 和 APN&#xff0c;在IMS 里面选择CMW500 Setting , 还是不能成功注册VOLTE。 有4G信号&#xff0c;数据链接正常。 有一台相同平台的MTK6763的对比机&#xff0c;VOLTE可以正常的使用。 希望全国的高手能尽快…

VoLTE、VoWiFi和VoIP有什么不同?

转载来源&#xff0c;仅作个人记录保存&#xff1a; http://www.mscbsc.com/bbs/thread-572904-1-1.html 先谈谈VoLTE&#xff01; 关于VoLTE是如何工作的&#xff1f;这可以写上一本书。今天&#xff0c;我试试用几幅图能否简单解释清楚&#xff1f; 传统的语音业务工作于电…

LTE与VOLTE基础知识(1)

个人学习笔记&#xff0c;欢迎指正。 时间维度上看&#xff0c;现在5G研究如火如荼&#xff0c;4G LTE的大规模部署时间约为09年到13年左右。3GPP系统的持续演进和优化&#xff0c;提高性能、降低成本&#xff0c;3GPP提出了系统架构演进项目&#xff08;SAE&#xff09;。SAE…

VoLTE KPI指标分类和定义

1、总体 2 资源占用类 2.1 上行RB数&#xff08;新指标&#xff09; 1&#xff0c; 定义&#xff1a;每秒上行调度RB数/每秒上行实际调度次数 2&#xff0c; 统计方法  每秒上行调度RB数&#xff1a;指该用户在过去1秒内被实际调度的上行RB数  每秒上行实际调用次数&…

mtk android 12部分运营商apn无法编辑

修改以下两个文件: 一 . vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/network/apn/ApnEditor.java if (!isUserEdited && (mApnData.getInteger(USER_EDITABLE_INDEX, 1) 0|| apnTypesMatch(mReadOnlyApnTypes, mApnData.getStr…

【VOLTE】VOLTE的注册和去注册过程

这里主要对信令流程做简要概述&#xff0c;不做逐条讲解 VOLTE注册过程分为两部分&#xff0c;一部分是LTE的注册/LTE承载建立过程&#xff0c;第二部分是VOLTE注册过程。在VOLTE中信令组合情况非常多&#xff0c;这里介绍常用的一些注册情况场景 一、LTE专有承载建立过程 1.1专…

业务与信令-第5章VoLTE原理

什么是VoLTE?为什么要实施VoLTE&#xff1f;实施VoLTE技术时MME需要做什么&#xff1f;实施VoLTE技术时PGW需要做什么&#xff1f;针对VoLTE技术无线网络需要如何强化&#xff1f;VoLTE涉及哪些处理过程&#xff1f;终端在VoLTE中如何标识&#xff1f;什么是IMS&#xff1f;IM…