CDI implementation uses the new Elasticsearch client.

Original Pull Request #2293
Closes #2292
This commit is contained in:
Peter-Josef Meisch 2022-09-10 11:09:43 +02:00 committed by GitHub
parent 77da22598a
commit ccf136c8e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 10 deletions

View File

@ -80,6 +80,17 @@ public class ElasticsearchTemplate extends AbstractElasticsearchTemplate {
private final ElasticsearchExceptionTranslator exceptionTranslator; private final ElasticsearchExceptionTranslator exceptionTranslator;
// region _initialization // region _initialization
public ElasticsearchTemplate(ElasticsearchClient client) {
Assert.notNull(client, "client must not be null");
this.client = client;
this.jsonpMapper = client._transport().jsonpMapper();
requestConverter = new RequestConverter(elasticsearchConverter, jsonpMapper);
responseConverter = new ResponseConverter(jsonpMapper);
exceptionTranslator = new ElasticsearchExceptionTranslator(jsonpMapper);
}
public ElasticsearchTemplate(ElasticsearchClient client, ElasticsearchConverter elasticsearchConverter) { public ElasticsearchTemplate(ElasticsearchClient client, ElasticsearchConverter elasticsearchConverter) {
super(elasticsearchConverter); super(elasticsearchConverter);

View File

@ -17,15 +17,15 @@ package org.springframework.data.elasticsearch.repositories.cdi;
import static org.springframework.util.StringUtils.*; import static org.springframework.util.StringUtils.*;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import jakarta.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces; import jakarta.enterprise.inject.Produces;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.data.elasticsearch.client.elc.ElasticsearchClients;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnection; import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnection;
import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnectionInfo; import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnectionInfo;
@ -36,17 +36,16 @@ import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnectionInf
@ApplicationScoped @ApplicationScoped
class ElasticsearchOperationsProducer { class ElasticsearchOperationsProducer {
// todo #1973 switch to use the new client
@Produces @Produces
public ElasticsearchOperations createElasticsearchTemplate(RestHighLevelClient restHighLevelClient) { public ElasticsearchOperations createElasticsearchTemplate(ElasticsearchClient elasticsearchClient) {
return new ElasticsearchRestTemplate(restHighLevelClient); return new ElasticsearchTemplate(elasticsearchClient);
} }
@Produces @Produces
@OtherQualifier @OtherQualifier
@PersonDB @PersonDB
public ElasticsearchOperations createQualifiedElasticsearchTemplate(RestHighLevelClient restHighLevelClient) { public ElasticsearchOperations createQualifiedElasticsearchTemplate(ElasticsearchClient elasticsearchClient) {
return new ElasticsearchRestTemplate(restHighLevelClient); return new ElasticsearchTemplate(elasticsearchClient);
} }
@PreDestroy @PreDestroy
@ -55,7 +54,7 @@ class ElasticsearchOperationsProducer {
} }
@Produces @Produces
public RestHighLevelClient elasticsearchClient() { public ElasticsearchClient elasticsearchClient() {
// we rely on the tests being run with the SpringDataElasticsearchExtension class that sets up a containerized ES. // we rely on the tests being run with the SpringDataElasticsearchExtension class that sets up a containerized ES.
ClusterConnectionInfo connectionInfo = ClusterConnection.clusterConnectionInfo(); ClusterConnectionInfo connectionInfo = ClusterConnection.clusterConnectionInfo();
@ -72,6 +71,6 @@ class ElasticsearchOperationsProducer {
ClientConfiguration clientConfiguration = configurationBuilder // ClientConfiguration clientConfiguration = configurationBuilder //
.build(); .build();
return RestClients.create(clientConfiguration).rest(); return ElasticsearchClients.createImperative(clientConfiguration);
} }
} }