import lombok.Data;
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.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ConfigurationProperties(prefix = "elasticsearch")
@Configuration
@Data
public class ElasticsearchConfig {
private String host;
private Integer port;
private String username;
private String password;
/**
* 建立连接的最长等待时间
*/
private Integer connectTimeout;
/**
* 从服务器读取数据的最长等待时间
*/
private Integer socketTimeout;
/**
* 从连接池获取连接的超时时间
*/
private Integer connectionRequestTimeout;
@Bean(destroyMethod = "close")
public RestHighLevelClient restHighLevelClient() {
RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));
// 配置一些请求配置的参数
builder.setRequestConfigCallback(requestConfigBuilder -> {
requestConfigBuilder.setConnectTimeout(connectTimeout);
requestConfigBuilder.setSocketTimeout(socketTimeout);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeout);
return requestConfigBuilder;
});
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
// 配置一些httpClient的参数
builder.setHttpClientConfigCallback(httpClientBuilder -> {
// 设置keep-alive时间为3分钟
httpClientBuilder.setKeepAliveStrategy((response, context) -> 3 * 60 * 1000);
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
httpClientBuilder.setDefaultRequestConfig(RequestConfig.DEFAULT);
// 对于同一个目标主机,最多可以同时建立100个连接,默认是10
httpClientBuilder.setMaxConnPerRoute(100);
// 无论有多少个目标主机,整个HTTP客户端实例最多只能同时建立100个连接,默认是30
httpClientBuilder.setMaxConnTotal(100);
return httpClientBuilder;
});
return new RestHighLevelClient(builder);
}
}
es client
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 问题描述 前段时间用es-spark读取es数遇到了client节点流量打满的现象。es-spark配置的es.n...
- 一、前言 使用 ElasticSearch(简称 es) 的过程中,经常有一些临时查询(如 排查问题、验证效果),...
- 一、IndexRequest 1.索引、请求的文档id、以字符串形式提供的文档源 2.作为映射提供的文档源,该映射...
- 概述 最近由于一些原因需要升级 spring boot 版本,项目原来的版本是 spring boot 2.1.2...