前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot进行elasticsearch的开发

springboot进行elasticsearch的开发

原创
作者头像
小马哥学JAVA
发布2022-11-16 09:11:59
3470
发布2022-11-16 09:11:59
举报
文章被收录于专栏:JAVA开发专栏

目录

第一步:进行es的相关依赖的处理

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

第三步:定义springboot的es的配置类

第一步:进行es的相关依赖的处理

es依赖包的版本设置

<elasticsearch.version>6.4.3</elasticsearch.version>

<spring.data.elasticsearch.version>3.2.1.RELEASE</spring.data.elasticsearch.version>

<!-- elasticsearch -->

<dependency>

<groupId>org.elasticsearch</groupId>

<artifactId>elasticsearch</artifactId>

<version>${elasticsearch.version}</version>

<exclusions>

<exclusion>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>2.17.2</version>

</dependency>

<dependency>

<groupId>org.elasticsearch.client</groupId>

<artifactId>transport</artifactId>

<version>${elasticsearch.version}</version>

</dependency>

<dependency>

<groupId>org.elasticsearch.client</groupId>

<artifactId>elasticsearch-rest-client</artifactId>

<version>${elasticsearch.version}</version>

</dependency>

<dependency>

<groupId>org.elasticsearch.client</groupId>

<artifactId>elasticsearch-rest-high-level-client</artifactId>

<version>${elasticsearch.version}</version>

</dependency>

<dependency>

<groupId>org.elasticsearch.plugin</groupId>

<artifactId>transport-netty4-client</artifactId>

<version>${elasticsearch.version}</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

image
image
image.gif
image.gif

编辑

第三步:定义springboot的es的配置类

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import org.apache.http.HttpHost;

import org.apache.http.auth.AuthScope;

import org.apache.http.auth.UsernamePasswordCredentials;

import org.apache.http.client.CredentialsProvider;

import org.apache.http.impl.client.BasicCredentialsProvider;

import org.elasticsearch.client.RestClient;

import org.elasticsearch.client.RestClientBuilder;

import org.elasticsearch.client.RestHighLevelClient;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class SpringBootElasticsearchConfig {

private Logger LOGGER = LoggerFactory.getLogger(SpringBootElasticsearchConfig.class);

@Value("${system.elasticsearch.schema:http}")

private String schema;

@Value("${system.elasticsearch.address:#{null}}")

private String address;

@Value("${system.elasticsearch.userName:#{null}}")

private String userName;

@Value("${system.elasticsearch.password:#{null}}")

private String password;

@Value("${system.elasticsearch.connectTimeout:10000}")

private int connectTimeout;

@Value("${system.elasticsearch.socketTimeout:60000}")

private int socketTimeout;

@Value("${system.elasticsearch.connectionRequestTimeout:10000}")

private int connectionRequestTimeout;

@Value("${system.elasticsearch.maxConnectTotal:1000}")

private int maxConnectTotal;

@Value("${system.elasticsearch.maxConnectPerRoute:500}")

private int maxConnectPerRoute;

@Value("${system.elasticsearch.keepAliveTime:3600000}")

private long keepAliveTime;

public SpringBootElasticsearchConfig() {

}

@Bean(

name = {"restHighLevelClient"},

destroyMethod = "close"

)

public RestHighLevelClient restHighLevelClient() {

if (!StringUtils.isNotBlank(this.address)) {

return null;

} else {

this.LOGGER.info("start init elasticsearch address:" + this.address);

List<HttpHost> hostLists = new ArrayList();

String[] hostList = this.address.split(",");

String[] var3 = hostList;

int var4 = hostList.length;

for(int var5 = 0; var5 < var4; ++var5) {

String addr = var3[var5];

String host = addr.trim().split(":")[0];

String port = addr.trim().split(":")[1];

hostLists.add(new HttpHost(host, Integer.parseInt(port), this.schema));

}

HttpHost[] httpHost = (HttpHost[])hostLists.toArray(new HttpHost[0]);

RestClientBuilder builder = RestClient.builder(httpHost);

builder.setRequestConfigCallback((requestConfigBuilder) -> {

requestConfigBuilder.setConnectTimeout(this.connectTimeout);

requestConfigBuilder.setSocketTimeout(this.socketTimeout);

requestConfigBuilder.setConnectionRequestTimeout(this.connectionRequestTimeout);

return requestConfigBuilder;

});

builder.setHttpClientConfigCallback((httpClientBuilder) -> {

httpClientBuilder.setMaxConnTotal(this.maxConnectTotal);

httpClientBuilder.setMaxConnPerRoute(this.maxConnectPerRoute);

httpClientBuilder.setKeepAliveStrategy((response, context) -> {

return this.keepAliveTime;

});

if (StringUtils.isNotBlank(this.userName)) {

this.LOGGER.info("start setting username and password of elasticsearch");

CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(this.userName, this.password));

httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);

}

return httpClientBuilder;

});

return new RestHighLevelClient(builder);

}

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步:进行es的相关依赖的处理
  • 第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理
  • 第三步:定义springboot的es的配置类
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档