ES8.x-ElasticsearchClient 创建

基于 springframework.data.elasticsearch 创建

3.3.1版本包

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

@Configuration
public class ElasticRestClientConfig extends ElasticsearchConfiguration {

    private static final Logger LOGGER = LoggerFactory.getLogger(ElasticRestClientConfig.class);

    @Value("${spring.elasticsearch.rest.uris}")
    private String[] urls;


    @Override
    public ClientConfiguration clientConfiguration() {
        ClientConfiguration.ClientConfigurationCallback<RestClientBuilder> clientConfigurer = clientBuilder -> {
            return clientBuilder.setHttpClientConfigCallback(httpClientBuilder -> {
                httpClientBuilder.setKeepAliveStrategy((response, context) -> 10 * 60 * 1000);
                return httpClientBuilder;
            });
        };

        return ClientConfiguration.builder()
                .connectedTo(urls)
                .withClientConfigurer(clientConfigurer)
                .withConnectTimeout(Duration.ofSeconds(10)) // 设置连接超时
                .withSocketTimeout(Duration.ofSeconds(30)) // 设置读取数据的超时
                .build();
    }
    
    @Bean
    public ElasticsearchAsyncClient elasticsearchAsyncClient(ElasticsearchTransport transport) {
        return new ElasticsearchAsyncClient(transport);
    }
}

连接超时时间好像 这样设置没有什么用
还是会因为 linux 的连接超时而发生断线
只能重写 RestClient

 @Bean
    @Override
    public RestClient elasticsearchRestClient(ClientConfiguration clientConfiguration) {
        List<HttpHost> httpHosts = new ArrayList<>();
        for (String url : urls) {
            String[] split = url.split(":", 2);
            httpHosts.add(new HttpHost(split[0], Integer.parseInt(split[1]), "http"));
        }

        return RestClient.builder(httpHosts.toArray(new HttpHost[0]))
                // http 连接保持10分钟
                .setHttpClientConfigCallback(requestConfig -> requestConfig.setKeepAliveStrategy(
                        (response, context) -> 10 * 60 * 1000))
                .setRequestConfigCallback(requestConfigBuilder ->
                        requestConfigBuilder.setConnectTimeout(10000).setSocketTimeout(30000))
                .build();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值