in seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java [168:227]
private static RestClientBuilder getRestClientBuilder(
List<String> hosts,
Optional<String> username,
Optional<String> password,
boolean tlsVerifyCertificate,
boolean tlsVerifyHostnames,
Optional<String> keystorePath,
Optional<String> keystorePassword,
Optional<String> truststorePath,
Optional<String> truststorePassword) {
HttpHost[] httpHosts = new HttpHost[hosts.size()];
for (int i = 0; i < hosts.size(); i++) {
httpHosts[i] = HttpHost.create(hosts.get(i));
}
RestClientBuilder restClientBuilder =
RestClient.builder(httpHosts)
.setRequestConfigCallback(
requestConfigBuilder ->
requestConfigBuilder
.setConnectionRequestTimeout(
CONNECTION_REQUEST_TIMEOUT)
.setSocketTimeout(SOCKET_TIMEOUT));
restClientBuilder.setHttpClientConfigCallback(
httpClientBuilder -> {
if (username.isPresent()) {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
AuthScope.ANY,
new UsernamePasswordCredentials(username.get(), password.get()));
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
try {
if (tlsVerifyCertificate) {
Optional<SSLContext> sslContext =
SSLUtils.buildSSLContext(
keystorePath,
keystorePassword,
truststorePath,
truststorePassword);
sslContext.ifPresent(httpClientBuilder::setSSLContext);
} else {
SSLContext sslContext =
SSLContexts.custom()
.loadTrustMaterial(new TrustAllStrategy())
.build();
httpClientBuilder.setSSLContext(sslContext);
}
if (!tlsVerifyHostnames) {
httpClientBuilder.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return httpClientBuilder;
});
return restClientBuilder;
}