继上篇说到es的证书生成。今天用Java链接es8。 小弟用的springboot2.6.7
pom依赖如下:
<!-- ES -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.1.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
java代码如下:
String keyStorePass="111111";
Path trustStorePath = Paths.get("G:\joker\elasticsearch-8.1.3-windows-x86_64\elasticsearch-8.1.3\config\certs\http.p12");
KeyStore truststore = KeyStore.getInstance("pkcs12");
try (InputStream is = Files.newInputStream(trustStorePath)) {
truststore.load(is, keyStorePass.toCharArray());
}
SSLContextBuilder sslBuilder = SSLContexts.custom()
.loadTrustMaterial(truststore, null);
final SSLContext sslContext = sslBuilder.build();
final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "w8+deeHnQelq5GB3M4Dh"));
RestClientBuilder builder = RestClient.builder(
new HttpHost("127.0.0.1", 9200,"https"))
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext);
}
});
RestClient restClient = builder.build();
// Create the low-level client
// RestClient restClient = RestClient.builder(
// new HttpHost("localhost", 9200)).build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
Test002.ClientClass clientClass=new Test002.ClientClass();
clientClass.setRestClient(restClient);
clientClass.setElasticsearchClient(client);
return clientClass;
网上搜的资料太少,到此已经顺利链上啦,接下来就可以调用api。