Elasticsearch连接超时设置和验证

连接超时设置

public static RestHighLevelClient createClient(String serverHosts, Map<String, String> headers, String username, String password, int esSocketTimeout, int esConnectTimeout) {
        RestClientBuilder builder = RestClient.builder(getNodes(serverHosts));
        if (!headers.isEmpty()) {
            List<Header> defaultHeaders = new ArrayList<>();
            headers.forEach((k, v) -> {
                defaultHeaders.add(new BasicHeader(k, v));
            });
            builder.setDefaultHeaders(defaultHeaders.toArray(new Header[defaultHeaders.size()]));
        }
        if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
            final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user", "password"));
            builder.setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
        }
        System.out.println("esSocketTimeout:" + esSocketTimeout);
        System.out.println("esConnectTimeout:" + esConnectTimeout);
        builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
                .setSocketTimeout(esSocketTimeout)
                .setConnectTimeout(esConnectTimeout));
        return new RestHighLevelClient(builder);
    }

如何验证超时时间是否生效

Elasticsearch本质是通过http调用,在没法设置Es服务响应时间的情况下,可以自己起一个http服务作为测试桩,刻意拉长响应时间,看超时时间是否生效。
在这里插入图片描述

http服务

@RestController
public class TestController {

    @RequestMapping(value = "/index-dataform", method = RequestMethod.HEAD)
    public Object test() throws InterruptedException {
        Thread.sleep(60000);
        return "ok";
    }
}

测试代码

public static boolean isIndexExist(RestHighLevelClient client, String indexName) throws Exception {
        GetIndexRequest existsRequest = new GetIndexRequest();
        existsRequest.indices(indexName);
        boolean exists = client.indices().exists(existsRequest, RequestOptions.DEFAULT);
        return exists;
    }

@Test
    public void test() throws Exception {
        RestHighLevelClient client = EsClient.createClient("localhost:8082", new HashMap<>(), null, null, 10, 1000);
        System.out.println(EsClient.isIndexExist(client, "index-dataform"));
        EsClient.closeClient(client);
    }

测试效果

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值