es8 java 链接ssl

771 阅读1分钟

继上篇说到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。