From dbe483f032087b674bab9495efb5c3fc4889750f Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sat, 25 Jun 2022 18:27:52 +0200 Subject: [PATCH] Refactor code using Elasticsearch libs --- src/main/asciidoc/preface.adoc | 1 + ...elasticsearch-migration-guide-4.4-5.0.adoc | 144 +++++ .../asciidoc/reference/elasticsearch-new.adoc | 6 + .../asciidoc/reference/migration-guides.adoc | 3 + .../client/ClientConfiguration.java | 11 +- .../client/ClientConfigurationBuilder.java | 3 +- .../elasticsearch/client/elc/JsonUtils.java | 23 +- .../client/elc/ReactiveClusterTemplate.java | 2 +- .../elc/ReactiveElasticsearchTemplate.java | 2 +- .../elc/SearchDocumentResponseBuilder.java | 5 +- .../AbstractElasticsearchConfiguration.java | 6 +- ...actReactiveElasticsearchConfiguration.java | 7 +- .../erhlc}/CriteriaFilterProcessor.java | 4 +- .../erhlc}/CriteriaQueryProcessor.java | 4 +- .../erhlc}/DefaultClusterOperations.java | 8 +- .../DefaultReactiveClusterOperations.java | 6 +- .../DefaultReactiveElasticsearchClient.java | 14 +- .../DefaultRequestCreator.java | 4 +- .../DefaultWebClientProvider.java | 4 +- .../erhlc}/DocumentAdapters.java | 10 +- .../erhlc}/ElasticsearchAggregation.java | 5 +- .../erhlc}/ElasticsearchAggregations.java | 5 +- .../ElasticsearchClusterOperations.java | 6 +- .../ElasticsearchExceptionTranslator.java | 4 +- .../erhlc}/ElasticsearchRestTemplate.java | 15 +- .../erhlc}/HighlightQueryBuilder.java | 4 +- .../{reactive => erhlc}/HostProvider.java | 4 +- .../MultiNodeHostProvider.java | 10 +- .../{util => erhlc}/NamedXContents.java | 5 +- .../erhlc}/NativeSearchQuery.java | 6 +- .../erhlc}/NativeSearchQueryBuilder.java | 8 +- .../RawActionResponse.java | 4 +- .../erhlc}/ReactiveClusterOperations.java | 6 +- .../ReactiveElasticsearchClient.java | 2 +- .../erhlc}/ReactiveElasticsearchTemplate.java | 19 +- .../erhlc}/ReactiveIndexTemplate.java | 8 +- .../ReactiveRestClients.java | 4 +- .../RequestBodyEncodingException.java | 2 +- .../{util => erhlc}/RequestConverters.java | 5 +- .../{reactive => erhlc}/RequestCreator.java | 5 +- .../erhlc}/RequestFactory.java | 6 +- .../erhlc}/ResponseConverter.java | 6 +- .../{ => erhlc}/RestClientFactoryBean.java | 4 +- .../client/{ => erhlc}/RestClients.java | 6 +- .../erhlc}/RestIndexTemplate.java | 7 +- .../query => client/erhlc}/ScriptField.java | 4 +- .../erhlc}/SearchDocumentResponseBuilder.java | 7 +- .../erhlc}/SearchHitsUtil.java | 4 +- .../SingleNodeHostProvider.java | 10 +- .../WebClientProvider.java | 4 +- .../client/erhlc/package-info.java | 25 + .../client/reactive/package-info.java | 3 - .../ElasticsearchConfigurationSupport.java | 1 + .../RestClientBeanDefinitionParser.java | 2 +- .../core/ReactiveElasticsearchOperations.java | 5 +- .../core/ReactiveSearchOperations.java | 2 +- .../core/index/MappingBuilder.java | 1 - .../SimpleElasticsearchRepository.java | 2 +- ...SimpleReactiveElasticsearchRepository.java | 4 +- .../plugins/ExtendedPluginsClassLoader.java | 60 --- .../JUnit5SampleRestTemplateTests.java | 2 +- .../NestedObjectELCIntegrationTests.java | 107 ++++ .../NestedObjectERHLCIntegrationTests.java | 89 ++++ ...java => NestedObjectIntegrationTests.java} | 95 ++-- .../client/ClientConfigurationUnitTests.java | 3 +- .../elasticsearch/client/RestClientsTest.java | 7 +- .../elc/CriteriaQueryMappingUnitTests.java | 492 ++++++++++++++++++ .../elc/CriteriaQueryProcessorUnitTests.java | 457 ++++++++++++++++ .../erhlc}/CriteriaQueryMappingUnitTests.java | 2 +- .../CriteriaQueryProcessorUnitTests.java | 2 +- ...efaultReactiveElasticsearchClientTest.java | 2 +- .../DefaultWebClientProviderUnitTests.java | 2 +- .../ElasticsearchERHLCIntegrationTests.java | 11 +- ...ElasticsearchExceptionTranslatorTests.java | 2 +- ...csearchPartQueryERHLCIntegrationTests.java | 2 +- .../MultiNodeHostProviderUnitTests.java | 14 +- ...veElasticsearchClientIntegrationTests.java | 2 +- .../ReactiveElasticsearchClientUnitTests.java | 8 +- .../ReactiveMockClientTestsUtils.java | 4 +- .../RequestConvertersTest.java | 2 +- .../erhlc}/RequestFactoryTests.java | 2 +- .../SingleNodeHostProviderUnitTests.java | 6 +- .../client/reactive/package-info.java | 3 - ...icsearchConfigurationSupportUnitTests.java | 8 +- .../ElasticsearchConfigurationERHLCTests.java | 2 +- ...iveElasticsearchConfigurationELCTests.java | 2 +- ...eElasticsearchConfigurationERHLCTests.java | 6 +- .../ElasticsearchNamespaceHandlerTests.java | 2 +- .../core/ElasticsearchIntegrationTests.java | 73 ++- ...lasticsearchRestTemplateCallbackTests.java | 1 + .../ElasticsearchTemplateCallbackTests.java | 2 +- .../core/InnerHitsERHLCIntegrationTests.java | 2 +- .../core/LogEntityERHLCIntegrationTests.java | 2 +- ...iveElasticsearchERHLCIntegrationTests.java | 3 +- ...ReactiveElasticsearchIntegrationTests.java | 6 +- ...iveElasticsearchTemplateCallbackTests.java | 5 +- ...eactiveElasticsearchTemplateUnitTests.java | 3 +- .../core/ReindexERHLCIntegrationTests.java | 2 +- .../SearchAsYouTypeERHLCIntegrationTests.java | 2 +- .../AggregationERHLCIntegrationTests.java | 4 +- ...terOperationsReactiveIntegrationTests.java | 1 + .../document/DocumentAdaptersUnitTests.java | 1 + .../core/geo/GeoERHLCIntegrationTests.java | 2 +- ...ldNamingStrategyERHLCIntegrationTests.java | 2 +- ...ldNamingStrategyERHLCIntegrationTests.java | 2 +- .../query/HighlightQueryBuilderTests.java | 1 + .../query/NativeSearchQueryBuilderTests.java | 2 + .../CompletionERHLCIntegrationTests.java | 2 +- ...ompletionWithContextsIntegrationTests.java | 2 +- .../ReactiveSuggestERHLCIntegrationTests.java | 2 +- ...lasticsearchRestTemplateConfiguration.java | 8 +- ...lasticsearchRestTemplateConfiguration.java | 6 +- .../cdi/ElasticsearchOperationsProducer.java | 4 +- ...asticsearchRepositoryIntegrationTests.java | 4 +- ...asticsearchRepositoryIntegrationTests.java | 4 +- .../config/namespace/namespace.xml | 2 +- 116 files changed, 1715 insertions(+), 328 deletions(-) create mode 100644 src/main/asciidoc/reference/elasticsearch-migration-guide-4.4-5.0.adoc rename src/main/java/org/springframework/data/elasticsearch/{config => client/erhlc}/AbstractElasticsearchConfiguration.java (90%) rename src/main/java/org/springframework/data/elasticsearch/{config => client/erhlc}/AbstractReactiveElasticsearchConfiguration.java (91%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/CriteriaFilterProcessor.java (99%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/CriteriaQueryProcessor.java (98%) rename src/main/java/org/springframework/data/elasticsearch/{core/cluster => client/erhlc}/DefaultClusterOperations.java (85%) rename src/main/java/org/springframework/data/elasticsearch/{core/cluster => client/erhlc}/DefaultReactiveClusterOperations.java (89%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/DefaultReactiveElasticsearchClient.java (98%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/DefaultRequestCreator.java (88%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/DefaultWebClientProvider.java (98%) rename src/main/java/org/springframework/data/elasticsearch/{core/document => client/erhlc}/DocumentAdapters.java (97%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchAggregation.java (87%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchAggregations.java (87%) rename src/main/java/org/springframework/data/elasticsearch/{core/cluster => client/erhlc}/ElasticsearchClusterOperations.java (86%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchExceptionTranslator.java (98%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchRestTemplate.java (97%) rename src/main/java/org/springframework/data/elasticsearch/{core/query => client/erhlc}/HighlightQueryBuilder.java (98%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/HostProvider.java (98%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/MultiNodeHostProvider.java (93%) rename src/main/java/org/springframework/data/elasticsearch/client/{util => erhlc}/NamedXContents.java (98%) rename src/main/java/org/springframework/data/elasticsearch/{core/query => client/erhlc}/NativeSearchQuery.java (96%) rename src/main/java/org/springframework/data/elasticsearch/{core/query => client/erhlc}/NativeSearchQueryBuilder.java (96%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/RawActionResponse.java (96%) rename src/main/java/org/springframework/data/elasticsearch/{core/cluster => client/erhlc}/ReactiveClusterOperations.java (84%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/ReactiveElasticsearchClient.java (99%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ReactiveElasticsearchTemplate.java (97%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ReactiveIndexTemplate.java (97%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/ReactiveRestClients.java (96%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/RequestBodyEncodingException.java (95%) rename src/main/java/org/springframework/data/elasticsearch/client/{util => erhlc}/RequestConverters.java (99%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/RequestCreator.java (98%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/RequestFactory.java (99%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ResponseConverter.java (98%) rename src/main/java/org/springframework/data/elasticsearch/client/{ => erhlc}/RestClientFactoryBean.java (96%) rename src/main/java/org/springframework/data/elasticsearch/client/{ => erhlc}/RestClients.java (97%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/RestIndexTemplate.java (96%) rename src/main/java/org/springframework/data/elasticsearch/{core/query => client/erhlc}/ScriptField.java (91%) rename src/main/java/org/springframework/data/elasticsearch/{core/document => client/erhlc}/SearchDocumentResponseBuilder.java (97%) rename src/main/java/org/springframework/data/elasticsearch/{core => client/erhlc}/SearchHitsUtil.java (90%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/SingleNodeHostProvider.java (86%) rename src/main/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/WebClientProvider.java (99%) create mode 100644 src/main/java/org/springframework/data/elasticsearch/client/erhlc/package-info.java delete mode 100644 src/main/java/org/springframework/data/elasticsearch/client/reactive/package-info.java delete mode 100644 src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java create mode 100644 src/test/java/org/springframework/data/elasticsearch/NestedObjectELCIntegrationTests.java create mode 100644 src/test/java/org/springframework/data/elasticsearch/NestedObjectERHLCIntegrationTests.java rename src/test/java/org/springframework/data/elasticsearch/{NestedObjectTests.java => NestedObjectIntegrationTests.java} (81%) create mode 100644 src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java create mode 100644 src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessorUnitTests.java rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/CriteriaQueryMappingUnitTests.java (99%) rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/CriteriaQueryProcessorUnitTests.java (99%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/DefaultReactiveElasticsearchClientTest.java (98%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/DefaultWebClientProviderUnitTests.java (97%) rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchERHLCIntegrationTests.java (96%) rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchExceptionTranslatorTests.java (97%) rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/ElasticsearchPartQueryERHLCIntegrationTests.java (97%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/MultiNodeHostProviderUnitTests.java (93%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/ReactiveElasticsearchClientIntegrationTests.java (99%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/ReactiveElasticsearchClientUnitTests.java (98%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/ReactiveMockClientTestsUtils.java (98%) rename src/test/java/org/springframework/data/elasticsearch/client/{util => erhlc}/RequestConvertersTest.java (97%) rename src/test/java/org/springframework/data/elasticsearch/{core => client/erhlc}/RequestFactoryTests.java (99%) rename src/test/java/org/springframework/data/elasticsearch/client/{reactive => erhlc}/SingleNodeHostProviderUnitTests.java (87%) delete mode 100644 src/test/java/org/springframework/data/elasticsearch/client/reactive/package-info.java diff --git a/src/main/asciidoc/preface.adoc b/src/main/asciidoc/preface.adoc index 124d53a85..27d2c8406 100644 --- a/src/main/asciidoc/preface.adoc +++ b/src/main/asciidoc/preface.adoc @@ -37,6 +37,7 @@ built and tested. [cols="^,^,^,^,^",options="header"] |=== | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework | Spring Boot +| 2022.0 (Turing) | 5.0.x | 8.2.2 | 6.0.x | 3.0.x? | 2021.2 (Raj) | 4.4.x | 7.17.3 | 5.3.x | 2.7.x | 2021.1 (Q) | 4.3.x | 7.15.2 | 5.3.x | 2.6.x | 2021.0 (Pascal) | 4.2.xfootnote:oom[Out of maintenance] | 7.12.0 | 5.3.x | 2.5.x diff --git a/src/main/asciidoc/reference/elasticsearch-migration-guide-4.4-5.0.adoc b/src/main/asciidoc/reference/elasticsearch-migration-guide-4.4-5.0.adoc new file mode 100644 index 000000000..a10c662f4 --- /dev/null +++ b/src/main/asciidoc/reference/elasticsearch-migration-guide-4.4-5.0.adoc @@ -0,0 +1,144 @@ +[[elasticsearch-migration-guide-4.4-5.0]] += Upgrading from 4.4.x to 5.0.x + +This section describes breaking changes from version 4.4.x to 5.0.x and how removed features can be replaced by new +introduced features. + +[[elasticsearch-migration-guide-4.4-4.5.deprecations]] +== Deprecations + +=== `org.springframework.data.elasticsearch.client.erhlc` package + +See <>, all classes in this package have been +deprecated, as the default client implementations to use are the ones based on the new Java Client from +Elasticsearch, se <> + +[[elasticsearch-migration-guide-4.4-5.0.breaking-changes]] +== Breaking Changes + +=== Removal of deprecated calls + +==== suggest calls in operations interfaces have been removed + +Both `SearchOperations` and `ReactiveSearchOperations` had deprecated calls that were using Elasticsearch classes as +parameters. These now have been removed and so the dependency on Elasticsearch classes in these APIs has been cleaned. + +[[elasticsearch-migration-guide-4.4-5.0.breaking-changes-packages]] +=== Package changes + +All the classes that are using or depend on the deprecated Elasticsearch `RestHighLevelClient` have been moved to the +package `org.springframework.data.elasticsearch.client.erhlc`. By this change we now have a clear separation of code +using the old deprecated Elasticsearch libraries, code using the new Elasticsearch client and code that is +independent of the client implementation. Also the reactive implementation that was provided up to now has been moved +here, as this implementation contains code that was copied and adapted from Elasticsearch libraries. + + +[[elasticsearch-migration-guide-4.4-5.0.new-clients]] +== New Elasticsearch client + +Spring Data Elasticsearch now uses the new `ElasticsearchClient` and has +deprecated the use of the previous `RestHighLevelClient`. + +=== How to use the new client + +In order to use the new client the following steps are necessary: + +==== Add dependencies + +The dependencies for the new Elasticsearch client are still optional in Spring Data Elasticsearch so they need to be added explicitly: + +==== +[source,xml] +---- + + + co.elastic.clients + elasticsearch-java + 7.17.3 + + + commons-logging + commons-logging + + + + + org.elasticsearch.client + elasticsearch-rest-client + 7.17.3 + + + commons-logging + commons-logging + + + + +---- +==== + +When using Spring Boot, it is necessary to set the following property in the _pom.xml_. + +==== +[source,xml] +---- + + 2.0.1 + +---- +==== + +==== New configuration classes + +===== Imperative style + +In order configure Spring Data Elasticsearch to use the new client, it is necessary to create a configuration bean that derives from `org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration`: + +==== +[source,java] +---- +@Configuration +public class NewRestClientConfig extends ElasticsearchConfiguration { + + @Override + public ClientConfiguration clientConfiguration() { + return ClientConfiguration.builder() // + .connectedTo("localhost:9200") // + .build(); + } +} +---- +==== + +The configuration is done in the same way as with the old client, but it is not necessary anymore to create more than the configuration bean. +With this configuration, the following beans will be available in the Spring application context: + +* a `RestClient` bean, that is the configured low level `RestClient` that is used by the Elasticsearch client +* an `ElasticsearchClient` bean, this is the new client that uses the `RestClient` +* an `ElasticsearchOperations` bean, available with the bean names _elasticsearchOperations_ and _elasticsearchTemplate_, this uses the `ElasticsearchClient` + +===== Reactive style + +To use the new client in a reactive environment the only difference is the class from which to derive the configuration: + +==== +[source,java] +---- +@Configuration +public class NewRestClientConfig extends ReactiveElasticsearchConfiguration { + + @Override + public ClientConfiguration clientConfiguration() { + return ClientConfiguration.builder() // + .connectedTo("localhost:9200") // + .build(); + } +} +---- +==== + +With this configuration, the following beans will be available in the Spring application context: + +* a `RestClient` bean, that is the configured low level `RestClient` that is used by the Elasticsearch client +* an `ReactiveElasticsearchClient` bean, this is the new reactive client that uses the `RestClient` +* an `ReactiveElasticsearchOperations` bean, available with the bean names _reactiveElasticsearchOperations_ and _reactiveElasticsearchTemplate_, this uses the `ReactiveElasticsearchClient` diff --git a/src/main/asciidoc/reference/elasticsearch-new.adoc b/src/main/asciidoc/reference/elasticsearch-new.adoc index 11feabdcc..8149fdd6f 100644 --- a/src/main/asciidoc/reference/elasticsearch-new.adoc +++ b/src/main/asciidoc/reference/elasticsearch-new.adoc @@ -1,6 +1,12 @@ [[new-features]] = What's new +[[new-features.5-0-0]] +== New in Spring Data Elasticsearch 5.0 + +* Upgrade to Java 17 baseline +* Upgrade to Spring Framework 6 + [[new-features.4-4-0]] == New in Spring Data Elasticsearch 4.4 diff --git a/src/main/asciidoc/reference/migration-guides.adoc b/src/main/asciidoc/reference/migration-guides.adoc index fcba27ff1..5ef75a130 100644 --- a/src/main/asciidoc/reference/migration-guides.adoc +++ b/src/main/asciidoc/reference/migration-guides.adoc @@ -12,4 +12,7 @@ include::elasticsearch-migration-guide-4.1-4.2.adoc[] include::elasticsearch-migration-guide-4.2-4.3.adoc[] include::elasticsearch-migration-guide-4.3-4.4.adoc[] + +include::elasticsearch-migration-guide-4.4-5.0.adoc[] + :leveloffset: -1 diff --git a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java index ec6c366ab..56086f07d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java @@ -27,7 +27,8 @@ import javax.net.ssl.SSLContext; import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback; -import org.springframework.data.elasticsearch.client.reactive.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.http.HttpHeaders; import org.springframework.lang.Nullable; import org.springframework.web.reactive.function.client.WebClient; @@ -68,8 +69,8 @@ static ClientConfiguration localhost() { } /** - * Creates a new {@link ClientConfiguration} instance configured to a single host given {@code hostAndPort}. - * For example given the endpoint http://localhost:9200 + * Creates a new {@link ClientConfiguration} instance configured to a single host given {@code hostAndPort}. For + * example given the endpoint http://localhost:9200 * *
 	 * ClientConfiguration configuration = ClientConfiguration.create("localhost:9200");
@@ -82,8 +83,8 @@ static ClientConfiguration create(String hostAndPort) {
 	}
 
 	/**
-	 * Creates a new {@link ClientConfiguration} instance configured to a single host given {@link InetSocketAddress}.
-	 * For example given the endpoint http://localhost:9200
+	 * Creates a new {@link ClientConfiguration} instance configured to a single host given {@link InetSocketAddress}. For
+	 * example given the endpoint http://localhost:9200
 	 *
 	 * 
 	 * ClientConfiguration configuration = ClientConfiguration
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java
index c9bf2288c..bccdbb247 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java
@@ -31,7 +31,8 @@
 import org.springframework.data.elasticsearch.client.ClientConfiguration.ClientConfigurationBuilderWithRequiredEndpoint;
 import org.springframework.data.elasticsearch.client.ClientConfiguration.MaybeSecureClientConfigurationBuilder;
 import org.springframework.data.elasticsearch.client.ClientConfiguration.TerminalClientConfigurationBuilder;
-import org.springframework.data.elasticsearch.client.reactive.ReactiveRestClients;
+import org.springframework.data.elasticsearch.client.erhlc.ReactiveRestClients;
+import org.springframework.data.elasticsearch.client.erhlc.RestClients;
 import org.springframework.http.HttpHeaders;
 import org.springframework.lang.Nullable;
 import org.springframework.util.Assert;
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java
index 32c6788d9..e95feb190 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java
@@ -20,9 +20,11 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.springframework.lang.Nullable;
 
 /**
  * @author Peter-Josef Meisch
@@ -41,13 +43,28 @@ public static String toJson(Object object, JsonpMapper mapper) {
 		JsonGenerator generator = mapper.jsonProvider().createGenerator(baos);
 		mapper.serialize(object, generator);
 		generator.close();
-		String jsonMapping = "{}";
+		String json = "{}";
 		try {
-			jsonMapping = baos.toString("UTF-8");
+			json = baos.toString("UTF-8");
 		} catch (UnsupportedEncodingException e) {
 			LOGGER.warn("could not read json", e);
 		}
 
-		return jsonMapping;
+		return json;
 	}
+
+	@Nullable
+	public static String queryToJson(@Nullable co.elastic.clients.elasticsearch._types.query_dsl.Query query, JsonpMapper mapper) {
+
+		if (query == null) {
+			return null;
+		}
+
+		var baos = new ByteArrayOutputStream();
+		var generator = mapper.jsonProvider().createGenerator(baos);
+		query.serialize(generator, mapper);
+		generator.close();
+		return baos.toString(StandardCharsets.UTF_8);
+	}
+
 }
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveClusterTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveClusterTemplate.java
index 5fd04ed3b..0f2bd5e5c 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveClusterTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveClusterTemplate.java
@@ -19,8 +19,8 @@
 import co.elastic.clients.elasticsearch.cluster.HealthResponse;
 import reactor.core.publisher.Mono;
 
+import org.springframework.data.elasticsearch.client.erhlc.ReactiveClusterOperations;
 import org.springframework.data.elasticsearch.core.cluster.ClusterHealth;
-import org.springframework.data.elasticsearch.core.cluster.ReactiveClusterOperations;
 import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
 
 /**
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java
index eab11932f..4434f1a1f 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java
@@ -39,6 +39,7 @@
 import org.springframework.data.elasticsearch.NoSuchIndexException;
 import org.springframework.data.elasticsearch.UncategorizedElasticsearchException;
 import org.springframework.data.elasticsearch.client.UnsupportedBackendOperation;
+import org.springframework.data.elasticsearch.client.erhlc.ReactiveClusterOperations;
 import org.springframework.data.elasticsearch.client.util.ScrollState;
 import org.springframework.data.elasticsearch.core.AbstractReactiveElasticsearchTemplate;
 import org.springframework.data.elasticsearch.core.AggregationContainer;
@@ -46,7 +47,6 @@
 import org.springframework.data.elasticsearch.core.MultiGetItem;
 import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
 import org.springframework.data.elasticsearch.core.ReactiveIndexOperations;
-import org.springframework.data.elasticsearch.core.cluster.ReactiveClusterOperations;
 import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
 import org.springframework.data.elasticsearch.core.document.Document;
 import org.springframework.data.elasticsearch.core.document.SearchDocument;
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java
index 4202b7a85..88061b66b 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java
@@ -29,7 +29,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.elasticsearch.search.SearchHits;
 import org.springframework.data.elasticsearch.core.TotalHitsRelation;
 import org.springframework.data.elasticsearch.core.document.SearchDocument;
 import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse;
@@ -76,11 +75,11 @@ public static  SearchDocumentResponse from(ResponseBody response
 	}
 
 	/**
-	 * creates a {@link SearchDocumentResponseBuilder} from {@link SearchHits} with the given scrollId aggregations and
+	 * creates a {@link SearchDocumentResponseBuilder} from {@link HitsMetadata} with the given scrollId aggregations and
 	 * suggestES
 	 *
 	 * @param  entity type
-	 * @param hitsMetadata the {@link SearchHits} to process
+	 * @param hitsMetadata the {@link HitsMetadata} to process
 	 * @param scrollId scrollId
 	 * @param aggregations aggregations
 	 * @param suggestES the suggestion response from Elasticsearch
diff --git a/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractElasticsearchConfiguration.java
similarity index 90%
rename from src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractElasticsearchConfiguration.java
index 82caab490..f8f980db6 100644
--- a/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractElasticsearchConfiguration.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.config;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import org.elasticsearch.client.RestHighLevelClient;
 import org.springframework.context.annotation.Bean;
+import org.springframework.data.elasticsearch.config.ElasticsearchConfigurationSupport;
 import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
 
 /**
@@ -26,7 +26,9 @@
  * @author Peter-Josef Meisch
  * @since 3.2
  * @see ElasticsearchConfigurationSupport
+ * @deprecated since 5.0
  */
+@Deprecated
 public abstract class AbstractElasticsearchConfiguration extends ElasticsearchConfigurationSupport {
 
 	/**
diff --git a/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractReactiveElasticsearchConfiguration.java
similarity index 91%
rename from src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractReactiveElasticsearchConfiguration.java
index 50baf8a44..99cbe3536 100644
--- a/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/AbstractReactiveElasticsearchConfiguration.java
@@ -13,13 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.config;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import org.elasticsearch.action.support.IndicesOptions;
 import org.springframework.context.annotation.Bean;
-import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
+import org.springframework.data.elasticsearch.config.ElasticsearchConfigurationSupport;
 import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
 import org.springframework.data.elasticsearch.core.RefreshPolicy;
 import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
 import org.springframework.lang.Nullable;
@@ -29,7 +28,9 @@
  * @author Peter-Josef Meisch
  * @since 3.2
  * @see ElasticsearchConfigurationSupport
+ * @deprecated since 5.0
  */
+@Deprecated
 public abstract class AbstractReactiveElasticsearchConfiguration extends ElasticsearchConfigurationSupport {
 
 	/**
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaFilterProcessor.java
similarity index 99%
rename from src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaFilterProcessor.java
index 98e78669e..67b783a22 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaFilterProcessor.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import static org.springframework.data.elasticsearch.core.query.Criteria.*;
 
@@ -47,7 +47,9 @@
  * @author Mohsin Husen
  * @author Artur Konczak
  * @author Peter-Josef Meisch
+ * @deprecated since 5.0
  */
+@Deprecated
 class CriteriaFilterProcessor {
 
 	@Nullable
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessor.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessor.java
index ab49b12fb..79ddfcc85 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessor.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import static org.elasticsearch.index.query.Operator.*;
 import static org.elasticsearch.index.query.QueryBuilders.*;
@@ -44,7 +44,9 @@
  * @author Rasmus Faber-Espensen
  * @author James Bodkin
  * @author Peter-Josef Meisch
+ * @deprecated since 5.0
  */
+@Deprecated
 class CriteriaQueryProcessor {
 
 	@Nullable
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultClusterOperations.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultClusterOperations.java
similarity index 85%
rename from src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultClusterOperations.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultClusterOperations.java
index f1a524be4..baf4a7352 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultClusterOperations.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultClusterOperations.java
@@ -13,20 +13,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core.cluster;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
 import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
 import org.elasticsearch.client.RequestOptions;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
-import org.springframework.data.elasticsearch.core.ResponseConverter;
+import org.springframework.data.elasticsearch.core.cluster.ClusterHealth;
+import org.springframework.data.elasticsearch.core.cluster.ClusterOperations;
 
 /**
  * Default implementation of {@link ClusterOperations} using the {@link ElasticsearchRestTemplate}.
  *
  * @author Peter-Josef Meisch
  * @since 4.2
+ * @deprecated since 5.0
  */
+@Deprecated
 class DefaultClusterOperations implements ClusterOperations {
 
 	private final ElasticsearchRestTemplate template;
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultReactiveClusterOperations.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveClusterOperations.java
similarity index 89%
rename from src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultReactiveClusterOperations.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveClusterOperations.java
index e239fdbf4..cf7a9c166 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/cluster/DefaultReactiveClusterOperations.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveClusterOperations.java
@@ -13,20 +13,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core.cluster;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import reactor.core.publisher.Mono;
 
 import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
 import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ResponseConverter;
+import org.springframework.data.elasticsearch.core.cluster.ClusterHealth;
 
 /**
  * Default implementation of {@link ReactiveClusterOperations} using the {@link ReactiveElasticsearchOperations}.
  *
  * @author Peter-Josef Meisch
  * @since 4.2
+ * @deprecated since 5.0
  */
+@Deprecated
 public class DefaultReactiveClusterOperations implements ReactiveClusterOperations {
 	private final ReactiveElasticsearchOperations operations;
 
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClient.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClient.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClient.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClient.java
index 34d4a7ef1..8ca0157fa 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClient.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClient.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.reactive;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -95,12 +95,10 @@
 import org.springframework.data.elasticsearch.client.ClientLogger;
 import org.springframework.data.elasticsearch.client.ElasticsearchHost;
 import org.springframework.data.elasticsearch.client.NoReachableHostException;
-import org.springframework.data.elasticsearch.client.reactive.HostProvider.Verification;
-import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient.Cluster;
-import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient.Indices;
-import org.springframework.data.elasticsearch.client.util.NamedXContents;
+import org.springframework.data.elasticsearch.client.erhlc.HostProvider.Verification;
+import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient.Cluster;
+import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient.Indices;
 import org.springframework.data.elasticsearch.client.util.ScrollState;
-import org.springframework.data.elasticsearch.core.ResponseConverter;
 import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
 import org.springframework.data.util.Lazy;
 import org.springframework.http.HttpHeaders;
@@ -134,7 +132,9 @@
  * @since 3.2
  * @see ClientConfiguration
  * @see ReactiveRestClients
+ * @deprecated since 5.0
  */
+@Deprecated
 public class DefaultReactiveElasticsearchClient implements ReactiveElasticsearchClient, Indices, Cluster {
 
 	private final HostProvider hostProvider;
@@ -893,7 +893,7 @@ static class ClientStatus implements Status {
 
 		/*
 		 * (non-Javadoc)
-		 * @see org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient.Status#hosts()
+		 * @see org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient.Status#hosts()
 		 */
 		@Override
 		public Collection hosts() {
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultRequestCreator.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultRequestCreator.java
similarity index 88%
rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultRequestCreator.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultRequestCreator.java
index 036679b03..988492e88 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultRequestCreator.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultRequestCreator.java
@@ -13,10 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.reactive;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 /**
  * @author Roman Puchkovskiy
  * @since 4.0
+ * @deprecated since 5.0
  */
+@Deprecated
 class DefaultRequestCreator implements RequestCreator {}
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProvider.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProvider.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProvider.java
index cfd917541..28ae7f9d8 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProvider.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProvider.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.reactive;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.net.InetSocketAddress;
 import java.util.Map;
@@ -37,7 +37,9 @@
  * @author Huw Ayling-Miller
  * @author Peter-Josef Meisch
  * @since 3.2
+ * @deprecated since 5.0
  */
+@Deprecated
 class DefaultWebClientProvider implements WebClientProvider {
 
 	private final Map cachedClients;
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/DocumentAdapters.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DocumentAdapters.java
similarity index 97%
rename from src/main/java/org/springframework/data/elasticsearch/core/document/DocumentAdapters.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/DocumentAdapters.java
index 60e257ef0..ef33af57a 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/document/DocumentAdapters.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/DocumentAdapters.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core.document;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -41,7 +41,11 @@
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.SearchHits;
 import org.springframework.data.elasticsearch.core.MultiGetItem;
-import org.springframework.data.elasticsearch.core.ResponseConverter;
+import org.springframework.data.elasticsearch.core.document.Document;
+import org.springframework.data.elasticsearch.core.document.Explanation;
+import org.springframework.data.elasticsearch.core.document.NestedMetaData;
+import org.springframework.data.elasticsearch.core.document.SearchDocument;
+import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse;
 import org.springframework.data.mapping.MappingException;
 import org.springframework.lang.Nullable;
 import org.springframework.util.Assert;
@@ -62,7 +66,9 @@
  * @author Roman Puchkovskiy
  * @author Matt Gilene
  * @since 4.0
+ * @deprecated since 5.0
  */
+@Deprecated
 public final class DocumentAdapters {
 
 	private DocumentAdapters() {}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregation.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregation.java
similarity index 87%
rename from src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregation.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregation.java
index 3880c33ff..f55d8c4e4 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregation.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregation.java
@@ -13,9 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import org.elasticsearch.search.aggregations.Aggregation;
+import org.springframework.data.elasticsearch.core.AggregationContainer;
 import org.springframework.lang.NonNull;
 
 /**
@@ -23,7 +24,9 @@
  *
  * @author Peter-Josef Meisch
  * @since 4.3
+ * @deprecated since 5.0
  */
+@Deprecated
 public class ElasticsearchAggregation implements AggregationContainer {
 
 	private final Aggregation aggregation;
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregations.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregations.java
similarity index 87%
rename from src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregations.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregations.java
index cef6370f3..01ea2a996 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchAggregations.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchAggregations.java
@@ -13,9 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import org.elasticsearch.search.aggregations.Aggregations;
+import org.springframework.data.elasticsearch.core.AggregationsContainer;
 import org.springframework.lang.NonNull;
 
 /**
@@ -23,7 +24,9 @@
  *
  * @author Peter-Josef Meisch
  * @since 4.3
+ * @deprecated since 5.0
  */
+@Deprecated
 public class ElasticsearchAggregations implements AggregationsContainer {
 
 	private final Aggregations aggregations;
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/cluster/ElasticsearchClusterOperations.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchClusterOperations.java
similarity index 86%
rename from src/main/java/org/springframework/data/elasticsearch/core/cluster/ElasticsearchClusterOperations.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchClusterOperations.java
index ab3bb1c6a..6f59b9581 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/cluster/ElasticsearchClusterOperations.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchClusterOperations.java
@@ -13,15 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core.cluster;
+package org.springframework.data.elasticsearch.client.erhlc;
 
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.cluster.ClusterOperations;
 import org.springframework.util.Assert;
 
 /**
  * @author Peter-Josef Meisch
  * @since 4.4
+ * @deprecated since 5.0
  */
+@Deprecated
 public class ElasticsearchClusterOperations {
 	/**
 	 * Creates a ClusterOperations for a {@link ElasticsearchRestTemplate}.
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslator.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslator.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslator.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslator.java
index ff82f7015..3fdaa7745 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslator.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslator.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.io.IOException;
 import java.util.List;
@@ -44,7 +44,9 @@
  * @author Roman Puchkovskiy
  * @author Mark Paluch
  * @since 3.2
+ * @deprecated since 5.0
  */
+@Deprecated
 public class ElasticsearchExceptionTranslator implements PersistenceExceptionTranslator {
 
 	@Override
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchRestTemplate.java
similarity index 97%
rename from src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchRestTemplate.java
index bc90487cf..1f138b10e 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchRestTemplate.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 */
-package org.springframework.data.elasticsearch.core;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -57,17 +57,20 @@
 import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
 import org.elasticsearch.search.suggest.SuggestBuilder;
 import org.springframework.data.elasticsearch.BulkFailureException;
+import org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.IndexOperations;
+import org.springframework.data.elasticsearch.core.IndexedObjectInformation;
+import org.springframework.data.elasticsearch.core.MultiGetItem;
+import org.springframework.data.elasticsearch.core.RefreshPolicy;
+import org.springframework.data.elasticsearch.core.SearchHits;
+import org.springframework.data.elasticsearch.core.SearchScrollHits;
 import org.springframework.data.elasticsearch.core.cluster.ClusterOperations;
-import org.springframework.data.elasticsearch.core.cluster.ElasticsearchClusterOperations;
 import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
-import org.springframework.data.elasticsearch.core.document.DocumentAdapters;
-import org.springframework.data.elasticsearch.core.document.SearchDocumentResponseBuilder;
 import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.data.elasticsearch.core.query.BulkOptions;
 import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
 import org.springframework.data.elasticsearch.core.query.IndexQuery;
 import org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery;
-import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.data.elasticsearch.core.query.Query;
 import org.springframework.data.elasticsearch.core.query.UpdateQuery;
 import org.springframework.data.elasticsearch.core.query.UpdateResponse;
@@ -110,7 +113,9 @@
  * @author Farid Faoudi
  * @author Sijia Liu
  * @since 4.4
+ * @deprecated since 5.0
  */
+@Deprecated
 public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate {
 
 	private static final Log LOGGER = LogFactory.getLog(ElasticsearchRestTemplate.class);
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/HighlightQueryBuilder.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilder.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/HighlightQueryBuilder.java
index bf321adf7..1feb6bd6f 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilder.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/HighlightQueryBuilder.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.core.query;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.util.Arrays;
 import java.util.stream.Collectors;
@@ -35,7 +35,9 @@
  * Converts the {@link Highlight} annotation from a method to an Elasticsearch 7 {@link HighlightBuilder}.
  *
  * @author Peter-Josef Meisch
+ * @deprecated since 5.0
  */
+@Deprecated
 public class HighlightQueryBuilder {
 
 	private final MappingContext, ElasticsearchPersistentProperty> mappingContext;
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/HostProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/HostProvider.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/HostProvider.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/HostProvider.java
index 12a412ebd..86679bd7d 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/HostProvider.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/HostProvider.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.reactive;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import reactor.core.publisher.Mono;
 
@@ -36,7 +36,9 @@
  * @author Mark Paluch
  * @author Peter-Josef Meisch
  * @since 3.2
+ * @deprecated since 5.0
  */
+@Deprecated
 public interface HostProvider> {
 
 	/**
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProvider.java
similarity index 93%
rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProvider.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProvider.java
index edfc874ab..ec332087a 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProvider.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProvider.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.reactive;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -45,7 +45,9 @@
  * @author Mark Paluch
  * @author Peter-Josef Meisch
  * @since 3.2
+ * @deprecated since 5.0
  */
+@Deprecated
 class MultiNodeHostProvider implements HostProvider {
 
 	private final static Log LOGGER = LogFactory.getLog(MultiNodeHostProvider.class);
@@ -68,7 +70,7 @@ class MultiNodeHostProvider implements HostProvider {
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#clusterInfo()
+	 * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#clusterInfo()
 	 */
 	@Override
 	public Mono clusterInfo() {
@@ -78,7 +80,7 @@ public Mono clusterInfo() {
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#createWebClient(java.net.InetSocketAddress)
+	 * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#createWebClient(java.net.InetSocketAddress)
 	 */
 	@Override
 	public WebClient createWebClient(InetSocketAddress endpoint) {
@@ -87,7 +89,7 @@ public WebClient createWebClient(InetSocketAddress endpoint) {
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#lookupActiveHost(org.springframework.data.elasticsearch.client.reactive.HostProvider.Verification)
+	 * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#lookupActiveHost(org.springframework.data.elasticsearch.client.erhlc.HostProvider.Verification)
 	 */
 	@Override
 	public Mono lookupActiveHost(Verification verification) {
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/util/NamedXContents.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NamedXContents.java
similarity index 98%
rename from src/main/java/org/springframework/data/elasticsearch/client/util/NamedXContents.java
rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/NamedXContents.java
index 5d3d125f3..33a73e6f3 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/util/NamedXContents.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NamedXContents.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.springframework.data.elasticsearch.client.util;
+package org.springframework.data.elasticsearch.client.erhlc;
 
 import java.util.HashMap;
 import java.util.List;
@@ -78,7 +78,6 @@
 import org.elasticsearch.xcontent.ContextParser;
 import org.elasticsearch.xcontent.NamedXContentRegistry;
 import org.elasticsearch.xcontent.ParseField;
-import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
 
 /**
  * 

@@ -92,7 +91,9 @@ * * @author Russell Parry * @since 4.0 + * @deprecated since 5.0 */ +@Deprecated public class NamedXContents { private NamedXContents() { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQuery.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQuery.java index 893aae972..cd8543033 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQuery.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core.query; +package org.springframework.data.elasticsearch.client.erhlc; import java.util.ArrayList; import java.util.Arrays; @@ -28,6 +28,8 @@ import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.suggest.SuggestBuilder; +import org.springframework.data.elasticsearch.core.query.BaseQuery; +import org.springframework.data.elasticsearch.core.query.IndexBoost; import org.springframework.lang.Nullable; /** @@ -43,7 +45,9 @@ * @author Martin Choraine * @author Peter-Josef Meisch * @author Sijia Liu + * @deprecated since 5.0 */ +@Deprecated public class NativeSearchQuery extends BaseQuery { @Nullable private final QueryBuilder query; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQueryBuilder.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQueryBuilder.java index 30549372f..6b977a285 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/NativeSearchQueryBuilder.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core.query; +package org.springframework.data.elasticsearch.client.erhlc; import static org.springframework.util.CollectionUtils.*; @@ -32,6 +32,10 @@ import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.suggest.SuggestBuilder; +import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; +import org.springframework.data.elasticsearch.core.query.IndicesOptions; +import org.springframework.data.elasticsearch.core.query.Query; +import org.springframework.data.elasticsearch.core.query.RescorerQuery; import org.springframework.lang.Nullable; /** @@ -50,7 +54,9 @@ * @author Peer Mueller * @author vdisk * @author owen.qq + * @deprecated since 5.0 */ +@Deprecated public class NativeSearchQueryBuilder extends BaseQueryBuilder { @Nullable private QueryBuilder queryBuilder; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RawActionResponse.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RawActionResponse.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/RawActionResponse.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RawActionResponse.java index c8c54a2c6..8978b201a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RawActionResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RawActionResponse.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import reactor.core.publisher.Mono; @@ -34,7 +34,9 @@ * @author Mark Paluch * @author Oliver Drotbohm * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated class RawActionResponse extends ActionResponse { private final ClientResponse delegate; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/cluster/ReactiveClusterOperations.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveClusterOperations.java similarity index 84% rename from src/main/java/org/springframework/data/elasticsearch/core/cluster/ReactiveClusterOperations.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveClusterOperations.java index f238bcc2b..6c1679928 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/cluster/ReactiveClusterOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveClusterOperations.java @@ -13,16 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core.cluster; +package org.springframework.data.elasticsearch.client.erhlc; import reactor.core.publisher.Mono; +import org.springframework.data.elasticsearch.core.cluster.ClusterHealth; + /** * Reactive Elasticsearch operations on cluster level. * * @author Peter-Josef Meisch * @since 4.2 + * @deprecated since 5.0 */ +@Deprecated public interface ReactiveClusterOperations { /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClient.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClient.java similarity index 99% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClient.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClient.java index 4a28eb005..9d36ba798 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClient.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchTemplate.java similarity index 97% rename from src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchTemplate.java index 5f77e1995..95ffc58a9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchTemplate.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -47,18 +47,21 @@ import org.springframework.data.elasticsearch.BulkFailureException; import org.springframework.data.elasticsearch.NoSuchIndexException; import org.springframework.data.elasticsearch.UncategorizedElasticsearchException; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.core.cluster.DefaultReactiveClusterOperations; -import org.springframework.data.elasticsearch.core.cluster.ReactiveClusterOperations; +import org.springframework.data.elasticsearch.core.AbstractReactiveElasticsearchTemplate; +import org.springframework.data.elasticsearch.core.AggregationContainer; +import org.springframework.data.elasticsearch.core.IndexedObjectInformation; +import org.springframework.data.elasticsearch.core.MultiGetItem; +import org.springframework.data.elasticsearch.core.ReactiveIndexOperations; +import org.springframework.data.elasticsearch.core.RefreshPolicy; +import org.springframework.data.elasticsearch.core.SearchHitMapping; +import org.springframework.data.elasticsearch.core.SearchHitSupport; +import org.springframework.data.elasticsearch.core.SearchPage; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; -import org.springframework.data.elasticsearch.core.document.DocumentAdapters; import org.springframework.data.elasticsearch.core.document.SearchDocument; import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse; -import org.springframework.data.elasticsearch.core.document.SearchDocumentResponseBuilder; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.BulkOptions; import org.springframework.data.elasticsearch.core.query.ByQueryResponse; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.UpdateQuery; import org.springframework.data.elasticsearch.core.query.UpdateResponse; @@ -82,7 +85,9 @@ * @author Farid Faoudi * @author Sijia Liu * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated public class ReactiveElasticsearchTemplate extends AbstractReactiveElasticsearchTemplate { private final ReactiveElasticsearchClient client; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveIndexTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveIndexTemplate.java similarity index 97% rename from src/main/java/org/springframework/data/elasticsearch/core/ReactiveIndexTemplate.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveIndexTemplate.java index 6324a5fe8..731d4d528 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveIndexTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveIndexTemplate.java @@ -13,11 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.elasticsearch.client.Requests.*; import static org.springframework.util.StringUtils.*; +import org.springframework.data.elasticsearch.core.IndexInformation; +import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; +import org.springframework.data.elasticsearch.core.ReactiveIndexOperations; +import org.springframework.data.elasticsearch.core.ReactiveResourceUtil; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -62,7 +66,9 @@ * @author Peter-Josef Meisch * @author George Popides * @since 4.1 + * @deprecated since 5.0 */ +@Deprecated class ReactiveIndexTemplate implements ReactiveIndexOperations { private static final Log LOGGER = LogFactory.getLog(ReactiveIndexTemplate.class); diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveRestClients.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveRestClients.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveRestClients.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveRestClients.java index 0a2880753..1344790fd 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveRestClients.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveRestClients.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import java.util.function.Function; @@ -29,7 +29,9 @@ * @author Mark Paluch * @author Roman Puchkovskiy * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated public final class ReactiveRestClients { private ReactiveRestClients() {} diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestBodyEncodingException.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestBodyEncodingException.java similarity index 95% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestBodyEncodingException.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestBodyEncodingException.java index fb6a6a48a..2fe264ae0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestBodyEncodingException.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestBodyEncodingException.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import org.springframework.web.reactive.function.client.WebClientException; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/util/RequestConverters.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestConverters.java similarity index 99% rename from src/main/java/org/springframework/data/elasticsearch/client/util/RequestConverters.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestConverters.java index c1c930a7f..b61921cdc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/util/RequestConverters.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestConverters.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.util; +package org.springframework.data.elasticsearch.client.erhlc; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -101,7 +101,6 @@ import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentParser; import org.elasticsearch.xcontent.XContentType; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; import org.springframework.http.HttpMethod; import org.springframework.lang.Nullable; @@ -120,7 +119,9 @@ * @author Peter-Josef Meisch * @author Farid Faoudi * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated @SuppressWarnings("JavadocReference") public class RequestConverters { diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestCreator.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestCreator.java similarity index 98% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestCreator.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestCreator.java index 7571e32bd..018c8d50f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestCreator.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestCreator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import java.io.IOException; import java.util.function.Function; @@ -53,14 +53,15 @@ import org.elasticsearch.index.reindex.UpdateByQueryRequest; import org.elasticsearch.script.mustache.SearchTemplateRequest; import org.springframework.data.elasticsearch.UncategorizedElasticsearchException; -import org.springframework.data.elasticsearch.client.util.RequestConverters; /** * @author Roman Puchkovskiy * @author Farid Faoudi * @author George Popides * @since 4.0 + * @deprecated since 5.0 */ +@Deprecated public interface RequestCreator { default Function search() { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactory.java similarity index 99% rename from src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactory.java index 96aca1477..705020d1a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.elasticsearch.core.TimeValue.*; import static org.elasticsearch.index.query.QueryBuilders.*; @@ -91,6 +91,8 @@ import org.elasticsearch.xcontent.XContentBuilder; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.Sort; +import org.springframework.data.elasticsearch.core.RefreshPolicy; +import org.springframework.data.elasticsearch.core.ScriptType; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.AliasAction; @@ -127,7 +129,9 @@ * @author Sijia Liu * @author Peter Nowak * @since 4.0 + * @deprecated since 5.0 */ +@Deprecated class RequestFactory { // the default max result window size of Elasticsearch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ResponseConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ResponseConverter.java similarity index 98% rename from src/main/java/org/springframework/data/elasticsearch/core/ResponseConverter.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ResponseConverter.java index b74fcab1d..618ccadea 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ResponseConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ResponseConverter.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import java.util.ArrayList; import java.util.Collections; @@ -40,6 +40,8 @@ import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.ScrollableHitSource; +import org.springframework.data.elasticsearch.core.IndexInformation; +import org.springframework.data.elasticsearch.core.MultiGetItem; import org.springframework.data.elasticsearch.core.cluster.ClusterHealth; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.AliasData; @@ -57,7 +59,9 @@ * @author Peter-Josef Meisch * @author Sijia Liu * @since 4.2 + * @deprecated since 5.0 */ +@Deprecated public class ResponseConverter { private ResponseConverter() {} diff --git a/src/main/java/org/springframework/data/elasticsearch/client/RestClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClientFactoryBean.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/client/RestClientFactoryBean.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClientFactoryBean.java index 8ef4efc7b..202a83e82 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/RestClientFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClientFactoryBean.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client; +package org.springframework.data.elasticsearch.client.erhlc; import java.net.URL; import java.util.ArrayList; @@ -35,7 +35,9 @@ * * @author Don Wellington * @author Peter-Josef Meisch + * @deprecated since 5.0 */ +@Deprecated public class RestClientFactoryBean implements FactoryBean, InitializingBean, DisposableBean { private static final Log LOGGER = LogFactory.getLog(RestClientFactoryBean.class); diff --git a/src/main/java/org/springframework/data/elasticsearch/client/RestClients.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClients.java similarity index 97% rename from src/main/java/org/springframework/data/elasticsearch/client/RestClients.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClients.java index 8d059e5e3..a3f5eee4c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/RestClients.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestClients.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client; +package org.springframework.data.elasticsearch.client.erhlc; import java.io.ByteArrayOutputStream; import java.io.Closeable; @@ -44,6 +44,8 @@ import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClientBuilder; +import org.springframework.data.elasticsearch.client.ClientConfiguration; +import org.springframework.data.elasticsearch.client.ClientLogger; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.util.Assert; @@ -59,7 +61,9 @@ * @author Peter-Josef Meisch * @author Nic Hines * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated public final class RestClients { /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/RestIndexTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestIndexTemplate.java similarity index 96% rename from src/main/java/org/springframework/data/elasticsearch/core/RestIndexTemplate.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestIndexTemplate.java index 7ab664df0..bfa3a90bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/RestIndexTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/RestIndexTemplate.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import java.util.Collections; import java.util.List; @@ -40,6 +40,9 @@ import org.elasticsearch.client.indices.PutIndexTemplateRequest; import org.elasticsearch.client.indices.PutMappingRequest; import org.elasticsearch.cluster.metadata.MappingMetadata; +import org.springframework.data.elasticsearch.core.AbstractIndexTemplate; +import org.springframework.data.elasticsearch.core.IndexInformation; +import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.AliasActions; import org.springframework.data.elasticsearch.core.index.AliasData; @@ -60,7 +63,9 @@ * @author Sascha Woo * @author George Popides * @since 4.0 + * @deprecated since 5.0 */ +@Deprecated class RestIndexTemplate extends AbstractIndexTemplate implements IndexOperations { private static final Log LOGGER = LogFactory.getLog(RestIndexTemplate.class); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptField.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ScriptField.java similarity index 91% rename from src/main/java/org/springframework/data/elasticsearch/core/query/ScriptField.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/ScriptField.java index b5202dd39..72b0581b3 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptField.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/ScriptField.java @@ -13,14 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core.query; +package org.springframework.data.elasticsearch.client.erhlc; import org.elasticsearch.script.Script; /** * @author Ryan Murfitt * @author Artur Konczak + * @deprecated since 5.0 */ +@Deprecated public class ScriptField { private final String fieldName; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponseBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchDocumentResponseBuilder.java similarity index 97% rename from src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponseBuilder.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchDocumentResponseBuilder.java index 51e1da753..8363ddd24 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponseBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchDocumentResponseBuilder.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core.document; +package org.springframework.data.elasticsearch.client.erhlc; import java.util.ArrayList; import java.util.List; @@ -26,7 +26,8 @@ import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.aggregations.Aggregations; -import org.springframework.data.elasticsearch.core.ElasticsearchAggregations; +import org.springframework.data.elasticsearch.core.document.SearchDocument; +import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse; import org.springframework.data.elasticsearch.core.suggest.response.CompletionSuggestion; import org.springframework.data.elasticsearch.core.suggest.response.PhraseSuggestion; import org.springframework.data.elasticsearch.core.suggest.response.SortBy; @@ -41,7 +42,9 @@ * * @author Peter-Josef Meisch * @since 4.0 + * @deprecated since 5.0 */ +@Deprecated public class SearchDocumentResponseBuilder { private static final Log LOGGER = LogFactory.getLog(SearchDocumentResponse.class); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsUtil.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchHitsUtil.java similarity index 90% rename from src/main/java/org/springframework/data/elasticsearch/core/SearchHitsUtil.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchHitsUtil.java index 0c456596f..f2354efc7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsUtil.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SearchHitsUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import org.elasticsearch.search.SearchHits; @@ -22,7 +22,9 @@ * * @author Peter-Josef Meisch * @since 4.4 + * @deprecated since 5.0 */ +@Deprecated public final class SearchHitsUtil { private SearchHitsUtil() {} diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProvider.java similarity index 86% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProvider.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProvider.java index 167f1f972..d3edc7ec8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProvider.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProvider.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import reactor.core.publisher.Mono; @@ -32,7 +32,9 @@ * @author Mark Paluch * @author Peter-Josef Meisch * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated class SingleNodeHostProvider implements HostProvider { private final WebClientProvider clientProvider; @@ -48,7 +50,7 @@ class SingleNodeHostProvider implements HostProvider { /* * (non-Javadoc) - * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#clusterInfo() + * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#clusterInfo() */ @Override public Mono clusterInfo() { @@ -71,7 +73,7 @@ public Mono clusterInfo() { /* * (non-Javadoc) - * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#createWebClient(java.net.InetSocketAddress) + * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#createWebClient(java.net.InetSocketAddress) */ @Override public WebClient createWebClient(InetSocketAddress endpoint) { @@ -80,7 +82,7 @@ public WebClient createWebClient(InetSocketAddress endpoint) { /* * (non-Javadoc) - * @see org.springframework.data.elasticsearch.client.reactive.HostProvider#lookupActiveHost(org.springframework.data.elasticsearch.client.reactive.HostProvider.Verification) + * @see org.springframework.data.elasticsearch.client.erhlc.HostProvider#lookupActiveHost(org.springframework.data.elasticsearch.client.erhlc.HostProvider.Verification) */ @Override public Mono lookupActiveHost(Verification verification) { diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/WebClientProvider.java similarity index 99% rename from src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java rename to src/main/java/org/springframework/data/elasticsearch/client/erhlc/WebClientProvider.java index 01da85fd2..47cba4f90 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/WebClientProvider.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import io.netty.channel.ChannelOption; import io.netty.handler.ssl.ApplicationProtocolConfig; @@ -55,7 +55,9 @@ * @author Huw Ayling-Miller * @author Peter-Josef Meisch * @since 3.2 + * @deprecated since 5.0 */ +@Deprecated public interface WebClientProvider { /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/erhlc/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/package-info.java new file mode 100644 index 000000000..82cd1dfbc --- /dev/null +++ b/src/main/java/org/springframework/data/elasticsearch/client/erhlc/package-info.java @@ -0,0 +1,25 @@ +/* + * Copyright 2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This package contains classes that use the old Elasticsearch 7 libraries to access Elasticsearch either directly by + * using the RestHighLevelClient or indirectly by using code copied from Elasticsearch libraries (reactive + * implementation). These classes are deprectaed in favour of using the implementations using the new Elasticsearch + * Client. + */ +@org.springframework.lang.NonNullApi +@org.springframework.lang.NonNullFields +package org.springframework.data.elasticsearch.client.erhlc; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/reactive/package-info.java deleted file mode 100644 index 3d808c547..000000000 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields -package org.springframework.data.elasticsearch.client.reactive; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java index 8356df3c9..f57c4d52d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java @@ -27,6 +27,7 @@ import org.springframework.core.convert.converter.Converter; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.client.erhlc.AbstractReactiveElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/RestClientBeanDefinitionParser.java b/src/main/java/org/springframework/data/elasticsearch/config/RestClientBeanDefinitionParser.java index f4f8548fd..48847c07b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/RestClientBeanDefinitionParser.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/RestClientBeanDefinitionParser.java @@ -19,7 +19,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.data.elasticsearch.client.RestClientFactoryBean; +import org.springframework.data.elasticsearch.client.erhlc.RestClientFactoryBean; import org.w3c.dom.Element; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java index 031dbc7a5..3388cc59a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java @@ -16,8 +16,9 @@ package org.springframework.data.elasticsearch.core; import org.reactivestreams.Publisher; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.core.cluster.ReactiveClusterOperations; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveClusterOperations; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java index e5215271c..2680abb51 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java @@ -21,8 +21,8 @@ import java.util.List; import org.springframework.data.domain.Pageable; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java index 176b331c1..7c82c1ec7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java @@ -32,7 +32,6 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.data.annotation.Transient; import org.springframework.data.elasticsearch.annotations.*; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.ResourceUtil; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.convert.ElasticsearchTypeMapper; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java index 4f66d9e84..82c12fbc7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java @@ -28,6 +28,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.IndexOperations; @@ -41,7 +42,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.BaseQuery; import org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.util.StreamUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java index d642eb12b..a8b58f267 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java @@ -21,8 +21,8 @@ import org.reactivestreams.Publisher; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.MultiGetItem; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.ReactiveIndexOperations; diff --git a/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java b/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java deleted file mode 100644 index 840bb28b8..000000000 --- a/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.plugins; - -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.Collections; -import java.util.List; - -/** - * A classloader that is a union over the parent core classloader and classloaders of extended plugins. Cloned from ES - * repository - that file is only available in ES server libs - and we need it o create a node client for unittests - */ -public class ExtendedPluginsClassLoader extends ClassLoader { - - /** Loaders of plugins extended by a plugin. */ - private final List extendedLoaders; - - private ExtendedPluginsClassLoader(ClassLoader parent, List extendedLoaders) { - super(parent); - this.extendedLoaders = Collections.unmodifiableList(extendedLoaders); - } - - @Override - protected Class findClass(String name) throws ClassNotFoundException { - for (ClassLoader loader : extendedLoaders) { - try { - return loader.loadClass(name); - } catch (ClassNotFoundException e) { - // continue - } - } - throw new ClassNotFoundException(name); - } - - /** - * Return a new classloader across the parent and extended loaders. - */ - public static ExtendedPluginsClassLoader create(ClassLoader parent, List extendedLoaders) { - return AccessController.doPrivileged( - (PrivilegedAction) () -> new ExtendedPluginsClassLoader(parent, extendedLoaders)); - } -} diff --git a/src/test/java/org/springframework/data/elasticsearch/JUnit5SampleRestTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/JUnit5SampleRestTemplateTests.java index e41e5c681..a315b8d71 100644 --- a/src/test/java/org/springframework/data/elasticsearch/JUnit5SampleRestTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/JUnit5SampleRestTemplateTests.java @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.test.context.ContextConfiguration; diff --git a/src/test/java/org/springframework/data/elasticsearch/NestedObjectELCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/NestedObjectELCIntegrationTests.java new file mode 100644 index 000000000..56f27a536 --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/NestedObjectELCIntegrationTests.java @@ -0,0 +1,107 @@ +/* + * Copyright 2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.elasticsearch; + +import static co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders.*; +import static org.springframework.data.elasticsearch.client.elc.QueryBuilders.*; + +import co.elastic.clients.elasticsearch._types.query_dsl.ChildScoreMode; + +import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.client.elc.NativeQuery; +import org.springframework.data.elasticsearch.core.query.Query; +import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration; +import org.springframework.data.elasticsearch.utils.IndexNameProvider; +import org.springframework.test.context.ContextConfiguration; + +/** + * @author Peter-Josef Meisch + */ +@ContextConfiguration(classes = { NestedObjectELCIntegrationTests.Config.class }) +public class NestedObjectELCIntegrationTests extends NestedObjectIntegrationTests { + @Configuration + @Import({ ElasticsearchTemplateConfiguration.class }) + static class Config { + @Bean + IndexNameProvider indexNameProvider() { + return new IndexNameProvider("nestedobject"); + } + + } + + @Override + protected @NotNull Query getNestedQuery1() { + return NativeQuery.builder().withQuery( // + nested(n -> n // + .path("car") // + .query(bool(b -> b // + .must(termQueryAsQuery("car.name", "saturn")) // + .must(termQueryAsQuery("car.model", "imprezza")) // + )) // + .scoreMode(ChildScoreMode.None) // + ) // + )// + .build(); + } + + @Override + protected @NotNull Query getNestedQuery2() { + return NativeQuery.builder().withQuery( // + bool(b -> b // + .must(nested(n -> n // + .path("girlFriends") // + .query(termQueryAsQuery("girlFriends.type", "temp")) // + .scoreMode(ChildScoreMode.None) // + )) // + .must(nested(n -> n // + .path("girlFriends.cars") // + .query(termQueryAsQuery("girlFriends.cars.name", "Ford".toLowerCase())) // + .scoreMode(ChildScoreMode.None) // + )) // + ) // + )// + .build(); + } + + @Override + protected @NotNull Query getNestedQuery3() { + return NativeQuery.builder().withQuery( // + nested(n -> n // + .path("books") // + .query(bool(b -> b // + .must(termQueryAsQuery("books.name", "java")) // + )) // + .scoreMode(ChildScoreMode.None) // + ) // + )// + .build(); + } + + @Override + protected @NotNull Query getNestedQuery4() { + return NativeQuery.builder().withQuery( // + nested(n -> n // + .path("buckets") // + .query(termQueryAsQuery("buckets.1", "test3")) // + .scoreMode(ChildScoreMode.None) // + ) // + )// + .build(); + } +} diff --git a/src/test/java/org/springframework/data/elasticsearch/NestedObjectERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/NestedObjectERHLCIntegrationTests.java new file mode 100644 index 000000000..14cb25124 --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/NestedObjectERHLCIntegrationTests.java @@ -0,0 +1,89 @@ +/* + * Copyright 2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.elasticsearch; + +import static org.elasticsearch.index.query.QueryBuilders.*; + +import org.apache.lucene.search.join.ScoreMode; +import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.core.query.Query; +import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; +import org.springframework.data.elasticsearch.utils.IndexNameProvider; +import org.springframework.test.context.ContextConfiguration; + +/** + * @author Peter-Josef Meisch + */ +@ContextConfiguration(classes = { NestedObjectERHLCIntegrationTests.Config.class }) +public class NestedObjectERHLCIntegrationTests extends NestedObjectIntegrationTests { + @Configuration + @Import({ ElasticsearchRestTemplateConfiguration.class }) + static class Config { + @Bean + IndexNameProvider indexNameProvider() { + return new IndexNameProvider("nestedobject-es7"); + } + + } + + @NotNull + protected Query getNestedQuery1() { + return new NativeSearchQueryBuilder().withQuery( // + nestedQuery("car", // + boolQuery() // + .must(termQuery("car.name", "saturn")) // + .must(termQuery("car.model", "imprezza")), // + ScoreMode.None)) // + .build(); + } + + @NotNull + protected Query getNestedQuery2() { + return new NativeSearchQueryBuilder().withQuery( // + boolQuery() // + .must(nestedQuery("girlFriends", // + termQuery("girlFriends.type", "temp"), // + ScoreMode.None)) // + .must(nestedQuery("girlFriends.cars", // + termQuery("girlFriends.cars.name", "Ford".toLowerCase()), // + ScoreMode.None))) // + .build(); + } + + @NotNull + protected Query getNestedQuery3() { + return new NativeSearchQueryBuilder().withQuery( // + nestedQuery("books", // + boolQuery() // + .must(termQuery("books.name", "java")), // + ScoreMode.None))// + .build(); + } + + @NotNull + protected Query getNestedQuery4() { + return new NativeSearchQueryBuilder().withQuery( // + nestedQuery("buckets", // + termQuery("buckets.1", "test3"), // + ScoreMode.None)) // + .build(); + } + +} diff --git a/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java b/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java similarity index 81% rename from src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java rename to src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java index c2e53d881..28ef0ed44 100644 --- a/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java @@ -16,7 +16,6 @@ package org.springframework.data.elasticsearch; import static org.assertj.core.api.Assertions.*; -import static org.elasticsearch.index.query.QueryBuilders.*; import static org.springframework.data.elasticsearch.utils.IdGenerator.*; import java.util.ArrayList; @@ -27,11 +26,9 @@ import java.util.List; import java.util.Map; -import org.apache.lucene.search.join.ScoreMode; -import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.QueryBuilder; -import org.junit.jupiter.api.AfterEach; +import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.annotation.Id; @@ -40,18 +37,15 @@ import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.InnerField; import org.springframework.data.elasticsearch.annotations.MultiField; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; +import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.data.elasticsearch.core.SearchHits; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.IndexQuery; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; -import org.springframework.data.elasticsearch.utils.IndexInitializer; +import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.lang.Nullable; -import org.springframework.test.context.ContextConfiguration; /** * @author Rizwan Idrees @@ -61,21 +55,23 @@ * @author Mark Paluch */ @SpringIntegrationTest -@ContextConfiguration(classes = { ElasticsearchRestTemplateConfiguration.class }) -public class NestedObjectTests { +public abstract class NestedObjectIntegrationTests { + @Autowired private IndexNameProvider indexNameProvider; @Autowired private ElasticsearchOperations operations; private final List> entityClasses = Arrays.asList(Book.class, Person.class, PersonMultipleLevelNested.class); @BeforeEach public void before() { - entityClasses.stream().map(operations::indexOps).forEach(IndexInitializer::init); + indexNameProvider.increment(); + entityClasses.stream().map(operations::indexOps).forEach(IndexOperations::createWithMapping); } - @AfterEach - void tearDown() { - entityClasses.forEach(clazz -> operations.indexOps(clazz).delete()); + @Test + @Order(java.lang.Integer.MAX_VALUE) + void cleanup() { + operations.indexOps(IndexCoordinates.of(indexNameProvider.getPrefix() + "*")).delete(); } @Test @@ -125,19 +121,18 @@ public void shouldIndexInitialLevelNestedObject() { indexQueries.add(indexQuery1); indexQueries.add(indexQuery2); - IndexCoordinates index = IndexCoordinates.of("test-index-person"); - operations.bulkIndex(indexQueries, index); + operations.bulkIndex(indexQueries, Person.class); operations.indexOps(Person.class).refresh(); - QueryBuilder builder = nestedQuery("car", - boolQuery().must(termQuery("car.name", "saturn")).must(termQuery("car.model", "imprezza")), ScoreMode.None); - - Query searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); - SearchHits persons = operations.search(searchQuery, Person.class, index); + Query searchQuery = getNestedQuery1(); + SearchHits persons = operations.search(searchQuery, Person.class); assertThat(persons).hasSize(1); } + @NotNull + abstract protected Query getNestedQuery1(); + @Test public void shouldIndexMultipleLevelNestedObject() { @@ -145,12 +140,10 @@ public void shouldIndexMultipleLevelNestedObject() { List indexQueries = createPerson(); // when - operations.bulkIndex(indexQueries, IndexCoordinates.of("test-index-person-multiple-level-nested")); - operations.indexOps(PersonMultipleLevelNested.class).refresh(); + operations.bulkIndex(indexQueries, PersonMultipleLevelNested.class); // then - PersonMultipleLevelNested personIndexed = operations.get("1", PersonMultipleLevelNested.class, - IndexCoordinates.of("test-index-person-multiple-level-nested")); + PersonMultipleLevelNested personIndexed = operations.get("1", PersonMultipleLevelNested.class); assertThat(personIndexed).isNotNull(); } @@ -161,7 +154,7 @@ public void shouldIndexMultipleLevelNestedObjectWithIncludeInParent() { List indexQueries = createPerson(); // when - operations.bulkIndex(indexQueries, IndexCoordinates.of("test-index-person-multiple-level-nested")); + operations.bulkIndex(indexQueries, PersonMultipleLevelNested.class); // then Map mapping = operations.indexOps(PersonMultipleLevelNested.class).getMapping(); @@ -180,24 +173,21 @@ public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() { List indexQueries = createPerson(); // when - IndexCoordinates index = IndexCoordinates.of("test-index-person-multiple-level-nested"); - operations.bulkIndex(indexQueries, index); - operations.indexOps(PersonMultipleLevelNested.class).refresh(); + operations.bulkIndex(indexQueries, PersonMultipleLevelNested.class); // then - BoolQueryBuilder builder = boolQuery(); - builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.None)).must( - nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()), ScoreMode.None)); - - NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); + Query searchQuery = getNestedQuery2(); SearchHits personIndexed = operations.search(searchQuery, - PersonMultipleLevelNested.class, index); + PersonMultipleLevelNested.class); assertThat(personIndexed).isNotNull(); assertThat(personIndexed.getTotalHits()).isEqualTo(1); assertThat(personIndexed.getSearchHit(0).getContent().getId()).isEqualTo("1"); } + @NotNull + abstract protected Query getNestedQuery2(); + private List createPerson() { PersonMultipleLevelNested person1 = new PersonMultipleLevelNested(); @@ -320,20 +310,19 @@ public void shouldSearchBooksForPersonInitialLevelNestedType() { indexQueries.add(indexQuery1); indexQueries.add(indexQuery2); - IndexCoordinates index = IndexCoordinates.of("test-index-person"); - operations.bulkIndex(indexQueries, index); - operations.indexOps(Person.class).refresh(); + operations.bulkIndex(indexQueries, Person.class); // when - QueryBuilder builder = nestedQuery("books", boolQuery().must(termQuery("books.name", "java")), ScoreMode.None); - - NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build(); - SearchHits persons = operations.search(searchQuery, Person.class, index); + Query searchQuery = getNestedQuery3(); + SearchHits persons = operations.search(searchQuery, Person.class); // then assertThat(persons).hasSize(1); } + @NotNull + abstract protected Query getNestedQuery3(); + @Test // DATAES-73 public void shouldIndexAndSearchMapAsNestedType() { @@ -369,20 +358,20 @@ public void shouldIndexAndSearchMapAsNestedType() { indexQueries.add(indexQuery2); // when - IndexCoordinates index = IndexCoordinates.of("test-index-book-nested-objects"); - operations.bulkIndex(indexQueries, index); - operations.indexOps(Book.class).refresh(); + operations.bulkIndex(indexQueries, Book.class); // then - NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() - .withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build(); - SearchHits books = operations.search(searchQuery, Book.class, index); + Query searchQuery = getNestedQuery4(); + SearchHits books = operations.search(searchQuery, Book.class); assertThat(books.getSearchHits()).hasSize(1); assertThat(books.getSearchHit(0).getContent().getId()).isEqualTo(book2.getId()); } - @Document(indexName = "test-index-book-nested-objects") + @NotNull + abstract protected Query getNestedQuery4(); + + @Document(indexName = "#{@indexNameProvider.indexName()}-book") static class Book { @Nullable @@ -443,7 +432,7 @@ public void setDescription(@Nullable String description) { } } - @Document(indexName = "test-index-person") + @Document(indexName = "#{@indexNameProvider.indexName()}-person") static class Person { @Nullable @Id private String id; @@ -513,7 +502,7 @@ public void setModel(String model) { } } - @Document(indexName = "test-index-person-multiple-level-nested") + @Document(indexName = "#{@indexNameProvider.indexName()}-person-multiple-nested") static class PersonMultipleLevelNested { @Nullable @Id private String id; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/ClientConfigurationUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/ClientConfigurationUnitTests.java index a6609bec5..5fa251c74 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/ClientConfigurationUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/ClientConfigurationUnitTests.java @@ -30,7 +30,8 @@ import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.data.elasticsearch.client.reactive.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/RestClientsTest.java b/src/test/java/org/springframework/data/elasticsearch/client/RestClientsTest.java index 6e5481e64..01dafd26b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/RestClientsTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/RestClientsTest.java @@ -44,7 +44,8 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.data.elasticsearch.client.elc.ElasticsearchClients; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.client.reactive.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveRestClients; +import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.http.HttpHeaders; import com.github.tomakehurst.wiremock.WireMockServer; @@ -400,7 +401,7 @@ public void index(T entity) throws IOException { /** * {@link ClientUnderTestFactory} implementation for the - * {@link org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient}. + * {@link org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient}. */ static class ReactiveERHLCUnderTestFactory extends ClientUnderTestFactory { @@ -411,7 +412,7 @@ protected String getDisplayName() { @Override ClientUnderTest create(ClientConfiguration clientConfiguration) { - org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient client = ReactiveRestClients + org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient client = ReactiveRestClients .create(clientConfiguration); return new ClientUnderTest() { @Override diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java new file mode 100644 index 000000000..d4f3f035a --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java @@ -0,0 +1,492 @@ +/* + * Copyright 2019-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.elasticsearch.client.elc; + +import static org.skyscreamer.jsonassert.JSONAssert.*; +import static org.springframework.data.elasticsearch.client.elc.JsonUtils.*; + +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import co.elastic.clients.json.JsonpMapper; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import org.assertj.core.api.SoftAssertions; +import org.json.JSONException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.core.convert.support.GenericConversionService; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; +import org.springframework.data.elasticsearch.annotations.InnerField; +import org.springframework.data.elasticsearch.annotations.MultiField; +import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter; +import org.springframework.data.elasticsearch.core.geo.GeoJson; +import org.springframework.data.elasticsearch.core.geo.GeoJsonPoint; +import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; +import org.springframework.data.elasticsearch.core.query.Criteria; +import org.springframework.data.elasticsearch.core.query.CriteriaQuery; +import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder; +import org.springframework.data.elasticsearch.core.query.Query; +import org.springframework.data.elasticsearch.core.query.SourceFilter; +import org.springframework.lang.Nullable; + +/** + * Tests for the mapping of {@link CriteriaQuery} by a {@link MappingElasticsearchConverter}. In the same package as + * {@link org.springframework.data.elasticsearch.client.elc.CriteriaQueryProcessor} as this is needed to get the String + * representation to assert. + * + * @author Peter-Josef Meisch + * @author Sascha Woo + * @author vdisk + */ +public class CriteriaQueryMappingUnitTests { + + private JsonpMapper mapper = new JacksonJsonpMapper(); + + MappingElasticsearchConverter mappingElasticsearchConverter; + + // region setup + @BeforeEach + void setUp() { + SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext(); + mappingContext.setInitialEntitySet(Collections.singleton(Person.class)); + mappingContext.afterPropertiesSet(); + + mappingElasticsearchConverter = new MappingElasticsearchConverter(mappingContext, new GenericConversionService()); + mappingElasticsearchConverter.afterPropertiesSet(); + + } + // endregion + + // region tests + @Test // DATAES-716 + void shouldMapNamesAndConvertValuesInCriteriaQuery() throws JSONException { + + // use POJO properties and types in the query building + CriteriaQuery criteriaQuery = new CriteriaQuery( // + new Criteria("birthDate") // + .between(LocalDate.of(1989, 11, 9), LocalDate.of(1990, 11, 9)) // + .or("birthDate").is(LocalDate.of(2019, 12, 28)) // + ); + + // mapped field name and converted parameter + var expected = """ + { + "bool": { + "should": [ + { + "range": { + "birth-date": { + "gte": "09.11.1989", + "lte": "09.11.1990" + } + } + }, + { + "query_string": { + "default_operator": "and", + "fields": [ + "birth-date" + ], + "query": "28.12.2019" + } + } + ] + } + } + """; + + mappingElasticsearchConverter.updateQuery(criteriaQuery, Person.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1668 + void shouldMapNamesAndConvertValuesInCriteriaQueryForSubCriteria() throws JSONException { + + // use POJO properties and types in the query building + CriteriaQuery criteriaQuery = new CriteriaQuery( // + Criteria.or().subCriteria(Criteria.where("birthDate") // + .between(LocalDate.of(1989, 11, 9), LocalDate.of(1990, 11, 9))) // + .subCriteria(Criteria.where("birthDate").is(LocalDate.of(2019, 12, 28))) // + ); + + // mapped field name and converted parameter + String expected = """ + { + "bool": { + "should": [ + { + "bool": { + "must": [ + { + "range": { + "birth-date": { + "gte": "09.11.1989", + "lte": "09.11.1990" + } + } + } + ] + } + }, + { + "bool": { + "must": [ + { + "query_string": { + "default_operator": "and", + "fields": [ + "birth-date" + ], + "query": "28.12.2019" + } + } + ] + } + } + ] + } + } + """; + + mappingElasticsearchConverter.updateQuery(criteriaQuery, Person.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1668 + void shouldMapNamesAndConvertValuesInCriteriaQueryForSubCriteriaWithDate() throws JSONException { + // use POJO properties and types in the query building + CriteriaQuery criteriaQuery = new CriteriaQuery( // + Criteria.or().subCriteria(Criteria.where("birthDate") // + .between(LocalDate.of(1989, 11, 9), LocalDate.of(1990, 11, 9))) // + .subCriteria(Criteria.where("createdDate").is(new Date(383745721653L))) // + ); + + // mapped field name and converted parameter + String expected = """ + { + "bool": { + "should": [ + { + "bool": { + "must": [ + { + "range": { + "birth-date": { + "gte": "09.11.1989", + "lte": "09.11.1990" + } + } + } + ] + } + }, + { + "bool": { + "must": [ + { + "query_string": { + "default_operator": "and", + "fields": [ + "created-date" + ], + "query": "383745721653" + } + } + ] + } + } + ] + } + } """; + + mappingElasticsearchConverter.updateQuery(criteriaQuery, Person.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldMapNamesAndValuesInSubCriteriaQuery() throws JSONException { + + CriteriaQuery criteriaQuery = new CriteriaQuery( // + new Criteria("firstName").matches("John") // + .subCriteria(new Criteria("birthDate") // + .between(LocalDate.of(1989, 11, 9), LocalDate.of(1990, 11, 9)) // + .or("birthDate").is(LocalDate.of(2019, 12, 28)))); + + String expected = """ + { + "bool": { + "must": [ + { + "match": { + "first-name": { + "query": "John" + } + } + }, + { + "bool": { + "should": [ + { + "range": { + "birth-date": { + "gte": "09.11.1989", + "lte": "09.11.1990" + } + } + }, + { + "query_string": { + "default_operator": "and", + "fields": [ + "birth-date" + ], + "query": "28.12.2019" + } + } + ] + } + } + ] + } + } """; + + mappingElasticsearchConverter.updateQuery(criteriaQuery, Person.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-931 + @DisplayName("should map names in GeoJson query") + void shouldMapNamesInGeoJsonQuery() throws JSONException { + + GeoJsonPoint geoJsonPoint = GeoJsonPoint.of(1.2, 3.4); + CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("geoShapeField").intersects(geoJsonPoint)); + + String expected = """ + { + "geo_shape": { + "geo-shape-field": { + "shape": { + "type": "Point", + "coordinates": [ + 1.2, + 3.4 + ] + }, + "relation": "intersects" + } + } + } + """; + + mappingElasticsearchConverter.updateQuery(criteriaQuery, GeoShapeEntity.class); + var queryString = queryToJson(CriteriaFilterProcessor.createQuery(criteriaQuery.getCriteria()).get(), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1753 + @DisplayName("should map names and value in nested entities") + void shouldMapNamesAndValueInNestedEntities() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "nested": { + "path": "per-sons", + "query": { + "query_string": { + "default_operator": "and", + "fields": [ + "per-sons.birth-date" + ], + "query": "03.10.1999" + } + }, + "score_mode": "avg" + } + } + ] + } + } + """; + + CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("persons.birthDate").is(LocalDate.of(1999, 10, 3))); + mappingElasticsearchConverter.updateQuery(criteriaQuery, House.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1753 + @DisplayName("should map names and value in nested entities with sub-fields") + void shouldMapNamesAndValueInNestedEntitiesWithSubfields() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "nested": { + "path": "per-sons", + "query": { + "query_string": { + "default_operator": "and", + "fields": [ + "per-sons.nick-name.keyword" + ], + "query": "Foobar" + } + }, + "score_mode": "avg" + } + } + ] + } + } """; + + CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("persons.nickName.keyword").is("Foobar")); + mappingElasticsearchConverter.updateQuery(criteriaQuery, House.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1761 + @DisplayName("should map names and value in object entities") + void shouldMapNamesAndValueInObjectEntities() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "query_string": { + "default_operator": "and", + "fields": [ + "per-sons.birth-date" + ], + "query": "03.10.1999" + } + } + ] + } + } """; + + CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("persons.birthDate").is(LocalDate.of(1999, 10, 3))); + mappingElasticsearchConverter.updateQuery(criteriaQuery, ObjectWithPerson.class); + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteriaQuery.getCriteria()), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1778 + @DisplayName("should map names in source fields and SourceFilters") + void shouldMapNamesInSourceFieldsAndSourceFilters() { + + Query query = Query.findAll(); + // Note: we don't care if these filters make sense here, this test is only about name mapping + query.addFields("firstName", "lastName"); + query.addSourceFilter(new FetchSourceFilterBuilder().withIncludes("firstName").withExcludes("lastName").build()); + + mappingElasticsearchConverter.updateQuery(query, Person.class); + + SoftAssertions softly = new SoftAssertions(); + softly.assertThat(query.getFields()).containsExactly("first-name", "last-name"); + SourceFilter sourceFilter = query.getSourceFilter(); + softly.assertThat(sourceFilter).isNotNull(); + softly.assertThat(sourceFilter.getIncludes()).containsExactly("first-name"); + softly.assertThat(sourceFilter.getExcludes()).containsExactly("last-name"); + softly.assertAll(); + } + + @Test + @DisplayName("should map names in source stored fields") + void shouldMapNamesInSourceStoredFields() { + + Query query = Query.findAll(); + query.addStoredFields("firstName", "lastName"); + + mappingElasticsearchConverter.updateQuery(query, Person.class); + + SoftAssertions softly = new SoftAssertions(); + List storedFields = query.getStoredFields(); + softly.assertThat(storedFields).isNotNull(); + softly.assertThat(storedFields).containsExactly("first-name", "last-name"); + softly.assertAll(); + } + + // endregion + // region helper functions + + + // endregion + + // region test entities + static class Person { + + @Nullable + @Id String id; + @Nullable + @Field(name = "first-name") String firstName; + @Nullable + @Field(name = "last-name") String lastName; + @Nullable + @MultiField(mainField = @Field(name = "nick-name"), + otherFields = { @InnerField(suffix = "keyword", type = FieldType.Keyword) }) String nickName; + @Nullable + @Field(name = "created-date", type = FieldType.Date, format = DateFormat.epoch_millis) Date createdDate; + @Nullable + @Field(name = "birth-date", type = FieldType.Date, format = {}, pattern = "dd.MM.uuuu") LocalDate birthDate; + } + + static class House { + @Nullable + @Id String id; + @Nullable + @Field(name = "per-sons", type = FieldType.Nested) List persons; + } + + static class ObjectWithPerson { + @Nullable + @Id String id; + @Nullable + @Field(name = "per-sons", type = FieldType.Object) List persons; + } + + static class GeoShapeEntity { + @Nullable + @Field(name = "geo-shape-field") GeoJson geoShapeField; + } + // endregion +} diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessorUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessorUnitTests.java new file mode 100644 index 000000000..d1dcb3bb6 --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessorUnitTests.java @@ -0,0 +1,457 @@ +/* + * Copyright 2020-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.elasticsearch.client.elc; + +import static org.skyscreamer.jsonassert.JSONAssert.*; +import static org.springframework.data.elasticsearch.client.elc.JsonUtils.*; + +import co.elastic.clients.json.JsonpMapper; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import org.json.JSONException; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.core.query.Criteria; + +/** + * @author Peter-Josef Meisch + */ +@SuppressWarnings("ConstantConditions") +class CriteriaQueryProcessorUnitTests { + + private JsonpMapper mapper = new JacksonJsonpMapper(); + + private final CriteriaQueryProcessor queryProcessor = new CriteriaQueryProcessor(); + + @Test // DATAES-706 + void shouldProcessTwoCriteriaWithAnd() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "query_string": { + "fields": [ + "field1" + ], + "query": "value1" + } + }, + { + "query_string": { + "fields": [ + "field2" + ], + "query": "value2" + } + } + ] + } + } + + """; // + + Criteria criteria = new Criteria("field1").is("value1").and("field2").is("value2"); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldProcessTwoCriteriaWithOr() throws JSONException { + + String expected = """ + { + "bool": { + "should": [ + { + "query_string": { + "fields": [ + "field1" + ], + "query": "value1" + } + }, + { + "query_string": { + "fields": [ + "field2" + ], + "query": "value2" + } + } + ] + } + } + """; + + Criteria criteria = new Criteria("field1").is("value1").or("field2").is("value2"); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldProcessMixedCriteriaWithOrAnd() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "query_string": { + "fields": [ + "field1" + ], + "query": "value1" + } + }, + { + "query_string": { + "fields": [ + "field3" + ], + "query": "value3" + } + } + ], + "should": [ + { + "query_string": { + "fields": [ + "field2" + ], + "query": "value2" + } + }, + { + "query_string": { + "fields": [ + "field4" + ], + "query": "value4" + } + } + ] + } + } + """; + + Criteria criteria = new Criteria("field1").is("value1") // + .or("field2").is("value2") // + .and("field3").is("value3") // + .or("field4").is("value4"); // + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldAddSubQuery() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "query_string": { + "fields": [ + "lastName" + ], + "query": "Miller" + } + }, + { + "bool": { + "should": [ + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "John" + } + }, + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "Jack" + } + } + ] + } + } + ] + } + } """; + + Criteria criteria = new Criteria("lastName").is("Miller") + .subCriteria(new Criteria().or("firstName").is("John").or("firstName").is("Jack")); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldProcessNestedSubCriteria() throws JSONException { + + String expected = """ + { + "bool": { + "should": [ + { + "bool": { + "must": [ + { + "query_string": { + "fields": [ + "lastName" + ], + "query": "Miller" + } + }, + { + "bool": { + "should": [ + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "John" + } + }, + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "Jack" + } + } + ] + } + } + ] + } + }, + { + "bool": { + "must": [ + { + "query_string": { + "fields": [ + "lastName" + ], + "query": "Smith" + } + }, + { + "bool": { + "should": [ + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "Emma" + } + }, + { + "query_string": { + "fields": [ + "firstName" + ], + "query": "Lucy" + } + } + ] + } + } + ] + } + } + ] + } + } + """; + + Criteria criteria = Criteria.or() + .subCriteria(new Criteria("lastName").is("Miller") + .subCriteria(new Criteria().or("firstName").is("John").or("firstName").is("Jack"))) + .subCriteria(new Criteria("lastName").is("Smith") + .subCriteria(new Criteria().or("firstName").is("Emma").or("firstName").is("Lucy"))); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldBuildMatchQuery() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "match": { + "field1": { + "operator": "or", + "query": "value1 value2" + } + } + } + ] + } + } + """; + + Criteria criteria = new Criteria("field1").matches("value1 value2"); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // DATAES-706 + void shouldBuildMatchAllQuery() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "match": { + "field1": { + "operator": "and", + "query": "value1 value2" + } + } + } + ] + } + } """; + + Criteria criteria = new Criteria("field1").matchesAll("value1 value2"); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1753 + @DisplayName("should build nested query") + void shouldBuildNestedQuery() throws JSONException { + + String expected = """ + { + "bool": { + "must": [ + { + "nested": { + "path": "houses.inhabitants", + "query": { + "query_string": { + "fields": [ + "houses.inhabitants.lastName" + ], + "query": "murphy" + } + } + } + } + ] + } + } """; + + Criteria criteria = new Criteria("houses.inhabitants.lastName").is("murphy"); + criteria.getField().setPath("houses.inhabitants"); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1909 + @DisplayName("should build query for empty property") + void shouldBuildQueryForEmptyProperty() throws JSONException { + + String expected = "{\n" + // + " \"bool\" : {\n" + // + " \"must\" : [\n" + // + " {\n" + // + " \"bool\" : {\n" + // + " \"must\" : [\n" + // + " {\n" + // + " \"exists\" : {\n" + // + " \"field\" : \"lastName\"" + // + " }\n" + // + " }\n" + // + " ],\n" + // + " \"must_not\" : [\n" + // + " {\n" + // + " \"wildcard\" : {\n" + // + " \"lastName\" : {\n" + // + " \"wildcard\" : \"*\"" + // + " }\n" + // + " }\n" + // + " }\n" + // + " ]\n" + // + " }\n" + // + " }\n" + // + " ]\n" + // + " }\n" + // + "}"; // + + Criteria criteria = new Criteria("lastName").empty(); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } + + @Test // #1909 + @DisplayName("should build query for non-empty property") + void shouldBuildQueryForNonEmptyProperty() throws JSONException { + + String expected = "{\n" + // + " \"bool\" : {\n" + // + " \"must\" : [\n" + // + " {\n" + // + " \"wildcard\" : {\n" + // + " \"lastName\" : {\n" + // + " \"wildcard\" : \"*\"\n" + // + " }\n" + // + " }\n" + // + " }\n" + // + " ]\n" + // + " }\n" + // + "}\n"; // + + Criteria criteria = new Criteria("lastName").notEmpty(); + + var queryString = queryToJson(CriteriaQueryProcessor.createQuery(criteria), mapper); + + assertEquals(expected, queryString, false); + } +} diff --git a/src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryMappingUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryMappingUnitTests.java similarity index 99% rename from src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryMappingUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryMappingUnitTests.java index 3bec799f6..0d9c400d4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryMappingUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryMappingUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.skyscreamer.jsonassert.JSONAssert.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessorUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessorUnitTests.java similarity index 99% rename from src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessorUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessorUnitTests.java index a4ddc072f..5f1c1c9b0 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessorUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/CriteriaQueryProcessorUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.skyscreamer.jsonassert.JSONAssert.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClientTest.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClientTest.java similarity index 98% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClientTest.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClientTest.java index 6a9049cf8..b24bf620e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClientTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultReactiveElasticsearchClientTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; import static org.elasticsearch.search.internal.SearchContext.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProviderUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProviderUnitTests.java similarity index 97% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProviderUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProviderUnitTests.java index 6ef2ae26f..89c428cae 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/DefaultWebClientProviderUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/DefaultWebClientProviderUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchERHLCIntegrationTests.java similarity index 96% rename from src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchERHLCIntegrationTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchERHLCIntegrationTests.java index ce4332816..473bf04bd 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchERHLCIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; import static org.elasticsearch.index.query.QueryBuilders.*; @@ -45,14 +45,15 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.core.ElasticsearchIntegrationTests; +import org.springframework.data.elasticsearch.core.RefreshPolicy; +import org.springframework.data.elasticsearch.core.ScriptType; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder; import org.springframework.data.elasticsearch.core.query.IndicesOptions; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.RescorerQuery; -import org.springframework.data.elasticsearch.core.query.ScriptField; import org.springframework.data.elasticsearch.core.query.UpdateQuery; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; @@ -288,4 +289,8 @@ void shouldUseAllOptionsFromUpdateByQuery() throws JSONException { assertThat(request.getScript().getType()).isEqualTo(org.elasticsearch.script.ScriptType.INLINE); assertThat(request.getScript().getLang()).isEqualTo("painless"); } + + private RequestFactory getRequestFactory() { + return ((ElasticsearchRestTemplate) operations).getRequestFactory(); + } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslatorTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslatorTests.java similarity index 97% rename from src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslatorTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslatorTests.java index f5daff6c9..234ca5090 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchExceptionTranslatorTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchExceptionTranslatorTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchPartQueryERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchPartQueryERHLCIntegrationTests.java similarity index 97% rename from src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchPartQueryERHLCIntegrationTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchPartQueryERHLCIntegrationTests.java index 5a6621fcf..4b0d4459c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchPartQueryERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ElasticsearchPartQueryERHLCIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.springframework.context.annotation.Configuration; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProviderUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProviderUnitTests.java similarity index 93% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProviderUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProviderUnitTests.java index 7800a3780..a697adba1 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/MultiNodeHostProviderUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/MultiNodeHostProviderUnitTests.java @@ -13,26 +13,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; -import org.mockito.invocation.InvocationOnMock; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import java.util.function.Function; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.invocation.InvocationOnMock; import org.springframework.data.elasticsearch.client.ElasticsearchHost; import org.springframework.data.elasticsearch.client.ElasticsearchHost.State; -import org.springframework.data.elasticsearch.client.reactive.HostProvider.Verification; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; +import org.springframework.data.elasticsearch.client.erhlc.HostProvider.Verification; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; import org.springframework.web.reactive.function.client.ClientResponse; -import java.util.function.Function; - /** * @author Christoph Strobl * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientIntegrationTests.java similarity index 99% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientIntegrationTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientIntegrationTests.java index dc235956e..389c7c362 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientUnitTests.java similarity index 98% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientUnitTests.java index dab6e1ea3..d903333df 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClientUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveElasticsearchClientUnitTests.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; -import static org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive.*; +import static org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive.*; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -46,8 +46,8 @@ import org.mockito.Mockito; import org.reactivestreams.Publisher; import org.springframework.data.elasticsearch.RestStatusException; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveMockClientTestsUtils.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveMockClientTestsUtils.java similarity index 98% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveMockClientTestsUtils.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveMockClientTestsUtils.java index f25bec0ff..07cec6500 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/ReactiveMockClientTestsUtils.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/ReactiveMockClientTestsUtils.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.mockito.Mockito.*; @@ -42,7 +42,7 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.data.elasticsearch.client.ElasticsearchHost; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockWebClientProvider.Send; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockWebClientProvider.Send; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/util/RequestConvertersTest.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestConvertersTest.java similarity index 97% rename from src/test/java/org/springframework/data/elasticsearch/client/util/RequestConvertersTest.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestConvertersTest.java index e36a30cf0..5553e0bf3 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/util/RequestConvertersTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestConvertersTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.client.util; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/RequestFactoryTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactoryTests.java similarity index 99% rename from src/test/java/org/springframework/data/elasticsearch/core/RequestFactoryTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactoryTests.java index 9fca88cc1..bcd23b29a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/RequestFactoryTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/RequestFactoryTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.elasticsearch.core; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; import static org.elasticsearch.index.query.QueryBuilders.*; diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProviderUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProviderUnitTests.java similarity index 87% rename from src/test/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProviderUnitTests.java rename to src/test/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProviderUnitTests.java index b7d3577df..92e57e9ad 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/SingleNodeHostProviderUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/erhlc/SingleNodeHostProviderUnitTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.data.elasticsearch.client.reactive; +package org.springframework.data.elasticsearch.client.erhlc; import static org.assertj.core.api.Assertions.*; @@ -25,8 +25,8 @@ import org.springframework.data.elasticsearch.client.ElasticsearchHost; import org.springframework.data.elasticsearch.client.ElasticsearchHost.State; import org.springframework.data.elasticsearch.client.NoReachableHostException; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; -import org.springframework.data.elasticsearch.client.reactive.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockDelegatingElasticsearchHostProvider; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveMockClientTestsUtils.MockWebClientProvider.Receive; /** * @author Christoph Strobl diff --git a/src/test/java/org/springframework/data/elasticsearch/client/reactive/package-info.java b/src/test/java/org/springframework/data/elasticsearch/client/reactive/package-info.java deleted file mode 100644 index 3d808c547..000000000 --- a/src/test/java/org/springframework/data/elasticsearch/client/reactive/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields -package org.springframework.data.elasticsearch.client.reactive; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java index eadb15ccc..6983b922b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java @@ -28,9 +28,11 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate; +import org.springframework.data.elasticsearch.client.erhlc.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractReactiveElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationERHLCTests.java b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationERHLCTests.java index 0130a01d9..d7bcfc0bf 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationERHLCTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationERHLCTests.java @@ -25,7 +25,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.lang.Nullable; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java index c43a21980..00370f88f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java @@ -26,7 +26,7 @@ import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration; -import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationERHLCTests.java b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationERHLCTests.java index 084193ec6..989da0416 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationERHLCTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationERHLCTests.java @@ -24,9 +24,9 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; -import org.springframework.data.elasticsearch.config.AbstractReactiveElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractReactiveElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories; import org.springframework.lang.Nullable; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/namespace/ElasticsearchNamespaceHandlerTests.java b/src/test/java/org/springframework/data/elasticsearch/config/namespace/ElasticsearchNamespaceHandlerTests.java index 1b82dbf1f..54e5256ab 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/namespace/ElasticsearchNamespaceHandlerTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/namespace/ElasticsearchNamespaceHandlerTests.java @@ -24,7 +24,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.client.RestClientFactoryBean; +import org.springframework.data.elasticsearch.client.erhlc.RestClientFactoryBean; import org.springframework.data.elasticsearch.junit.jupiter.Tags; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.test.context.ContextConfiguration; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java index 33e23baf0..4b89139f6 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java @@ -29,7 +29,16 @@ import java.lang.Integer; import java.lang.Long; import java.lang.Object; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -60,6 +69,7 @@ import org.springframework.data.elasticsearch.annotations.MultiField; import org.springframework.data.elasticsearch.annotations.ScriptedField; import org.springframework.data.elasticsearch.annotations.Setting; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.document.Explanation; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.index.AliasAction; @@ -107,6 +117,8 @@ @SpringIntegrationTest public abstract class ElasticsearchIntegrationTests implements NewElasticsearchClientDevelopment { + static final Integer INDEX_MAX_RESULT_WINDOW = 10_000; + private static final String MULTI_INDEX_PREFIX = "test-index"; private static final String MULTI_INDEX_ALL = MULTI_INDEX_PREFIX + "*"; private static final String MULTI_INDEX_1_NAME = MULTI_INDEX_PREFIX + "-1"; @@ -377,8 +389,7 @@ public void shouldReturnSearchHitsUsingLocalPreferenceForGivenSearchQuery() { .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); operations.index(indexQuery, IndexCoordinates.of(indexNameProvider.indexName())); - Query query = getBuilderWithMatchAllQuery() - .withPreference("_local").build(); + Query query = getBuilderWithMatchAllQuery().withPreference("_local").build(); SearchHits searchHits = operations.search(query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); @@ -395,11 +406,11 @@ public void shouldThrowExceptionWhenInvalidPreferenceForSearchQuery() { .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); operations.index(indexQuery, IndexCoordinates.of(indexNameProvider.indexName())); - Query query = getBuilderWithMatchAllQuery() - .withPreference("_only_nodes:oops").build(); + Query query = getBuilderWithMatchAllQuery().withPreference("_only_nodes:oops").build(); - assertThatThrownBy(() -> operations.search(query, SampleEntity.class, - IndexCoordinates.of(indexNameProvider.indexName()))).isInstanceOf(Exception.class); + assertThatThrownBy( + () -> operations.search(query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()))) + .isInstanceOf(Exception.class); } @Test // DATAES-422 - Add support for IndicesOptions in search queries @@ -675,7 +686,6 @@ public void shouldSortResultsGivenSortCriteria() { assertThat(searchHits.getSearchHit(0).getContent().getRate()).isEqualTo(sampleEntity2.getRate()); } - @Test public void shouldSortResultsGivenMultipleSortCriteria() { @@ -1000,8 +1010,7 @@ public void shouldReturnFieldsBasedOnSourceFilter() { FetchSourceFilterBuilder sourceFilter = new FetchSourceFilterBuilder(); sourceFilter.withIncludes("message"); - Query searchQuery = getBuilderWithMatchAllQuery() - .withSourceFilter(sourceFilter.build()).build(); + Query searchQuery = getBuilderWithMatchAllQuery().withSourceFilter(sourceFilter.build()).build(); // when SearchHits searchHits = operations.search(searchQuery, SampleEntity.class, @@ -1557,8 +1566,6 @@ void shouldDoUpdateByQueryForExistingDocument() { assertThat(indexedEntity.getMessage()).isEqualTo(messageAfterUpdate); } - - @Test public void shouldDoUpsertIfDocumentDoesNotExist() { @@ -1596,8 +1603,7 @@ public void shouldPassIndicesOptionsForGivenSearchScrollQuery() { operations.index(idxQuery, index); // when - Query query = getBuilderWithMatchAllQuery() - .withIndicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN).build(); + Query query = getBuilderWithMatchAllQuery().withIndicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN).build(); SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations) .searchScrollStart(scrollTimeInMillis, query, SampleEntity.class, index); @@ -1629,7 +1635,6 @@ public void shouldReturnSameEntityForMultiSearch() { queries.add(getTermQuery("message", "bc")); queries.add(getTermQuery("message", "ac")); - List> searchHits = operations.multiSearch(queries, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); @@ -1655,8 +1660,8 @@ public void shouldReturnDifferentEntityForMultiSearch() { queries.add(getTermQuery("message", "ab")); queries.add(getTermQuery("description", "bc")); - List> searchHitsList = operations.multiSearch(queries, Lists.newArrayList(SampleEntity.class, - Book.class), + List> searchHitsList = operations.multiSearch(queries, + Lists.newArrayList(SampleEntity.class, Book.class), IndexCoordinates.of(indexNameProvider.indexName(), bookIndex.getIndexName())); bookIndexOperations.delete(); @@ -2507,11 +2512,10 @@ public void shouldApplySearchQueryToScanAndScrollForGivenSearchQuery() { operations.bulkIndex(indexQueries, IndexCoordinates.of(indexNameProvider.indexName())); // when - Query query = getBuilderWithMatchQuery("message", "message") - .withPageable(PageRequest.of(0, 10)).build(); + Query query = getBuilderWithMatchQuery("message", "message").withPageable(PageRequest.of(0, 10)).build(); - SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, - query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); + SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, query, + SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); List> sampleEntities = new ArrayList<>(); while (scroll.hasSearchHits()) { sampleEntities.addAll(scroll.getSearchHits()); @@ -2589,8 +2593,8 @@ public void shouldSortResultsGivenSortCriteriaWithScanAndScroll() { .withSort(Sort.by(Sort.Order.desc("message"))) // .withPageable(PageRequest.of(0, 10)).build(); - SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, - query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); + SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, query, + SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); List> sampleEntities = new ArrayList<>(); while (scroll.hasSearchHits()) { sampleEntities.addAll(scroll.getSearchHits()); @@ -2635,8 +2639,8 @@ public void shouldSortResultsGivenSortCriteriaFromPageableWithScanAndScroll() { .build(); // when - SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, - query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); + SearchScrollHits scroll = ((AbstractElasticsearchTemplate) operations).searchScrollStart(1000, query, + SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName())); List> sampleEntities = new ArrayList<>(); while (scroll.hasSearchHits()) { sampleEntities.addAll(scroll.getSearchHits()); @@ -2713,7 +2717,6 @@ public void shouldReturnDocumentWithCollapsedFieldAndInnerHits() { assertThat(searchHits.getSearchHit(1).getInnerHits("innerHits").getTotalHits()).isEqualTo(1); } - @Test // #1997 @DisplayName("should return document with inner hits size zero") void shouldReturnDocumentWithInnerHitsSizeZero() { @@ -2891,7 +2894,6 @@ void shouldRunRescoreQueryInSearchQuery() { assertThat(searchHit.getScore()).isEqualTo(80f); } - @Test // DATAES-738 void shouldSaveEntityWithIndexCoordinates() { @@ -3042,8 +3044,8 @@ void multigetShouldReturnSeqNoPrimaryTerm() { OptimisticEntity saved = operations.save(original); List> retrievedList = operations.multiGet( - queryWithIds(Objects.requireNonNull(saved.getId())), - OptimisticEntity.class, operations.getIndexCoordinatesFor(OptimisticEntity.class)); + queryWithIds(Objects.requireNonNull(saved.getId())), OptimisticEntity.class, + operations.getIndexCoordinatesFor(OptimisticEntity.class)); assertThat(retrievedList).hasSize(1); OptimisticEntity retrieved = retrievedList.get(0).getItem(); @@ -3230,8 +3232,7 @@ public String apply(SearchHit sampleJoinEntitySearchHit) { assertThat(hitIds.size()).isEqualTo(1); assertThat(hitIds.get(0)).isEqualTo(aId2); - updatedHits = operations.search(getQueryForParentId("answer", qId1, null), - SampleJoinEntity.class); + updatedHits = operations.search(getQueryForParentId("answer", qId1, null), SampleJoinEntity.class); hitIds = updatedHits.getSearchHits().stream().map(new Function, String>() { @Override @@ -3263,10 +3264,6 @@ private org.springframework.data.elasticsearch.core.document.Document toDocument return document; } - protected RequestFactory getRequestFactory() { - return ((ElasticsearchRestTemplate) operations).getRequestFactory(); - } - @Test // DATAES-908 void shouldFillVersionOnSaveOne() { VersionedEntity saved = operations.save(new VersionedEntity()); @@ -3344,7 +3341,7 @@ void shouldTrackTotalHitsWithDefaultValue() { SearchHits searchHits = operations.search(queryAll, SampleEntity.class); SoftAssertions softly = new SoftAssertions(); - softly.assertThat(searchHits.getTotalHits()).isEqualTo((long) RequestFactory.INDEX_MAX_RESULT_WINDOW); + softly.assertThat(searchHits.getTotalHits()).isEqualTo((long) INDEX_MAX_RESULT_WINDOW); softly.assertThat(searchHits.getTotalHitsRelation()).isEqualTo(TotalHitsRelation.GREATER_THAN_OR_EQUAL_TO); softly.assertAll(); } @@ -3475,8 +3472,7 @@ void shouldSetScriptedFieldsOnImmutableObjects() { Query query = getMatchAllQueryWithIncludesAndInlineExpressionScript("*", "scriptedRate", "doc['rate'] * factor", params); - SearchHits searchHits = operations.search(query, - ImmutableWithScriptedEntity.class); + SearchHits searchHits = operations.search(query, ImmutableWithScriptedEntity.class); assertThat(searchHits.getTotalHits()).isEqualTo(1); ImmutableWithScriptedEntity foundEntity = searchHits.getSearchHit(0).getContent(); @@ -3485,7 +3481,6 @@ void shouldSetScriptedFieldsOnImmutableObjects() { assertThat(foundEntity.getScriptedRate()).isEqualTo(84.0); } - @Test // #1893 @DisplayName("should index document from source with version") void shouldIndexDocumentFromSourceWithVersion() { diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateCallbackTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateCallbackTests.java index de8e944c8..19715c669 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateCallbackTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateCallbackTests.java @@ -42,6 +42,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; /** * @author Roman Puchkovskiy diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateCallbackTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateCallbackTests.java index 9cfb26c0b..0e1fa2a68 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateCallbackTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateCallbackTests.java @@ -30,7 +30,7 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.event.AfterConvertCallback; import org.springframework.data.elasticsearch.core.event.AfterSaveCallback; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsERHLCIntegrationTests.java index 62e1e5e9a..4410ed227 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsERHLCIntegrationTests.java @@ -23,7 +23,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/LogEntityERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/LogEntityERHLCIntegrationTests.java index a5b09679d..402cd4b4d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/LogEntityERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/LogEntityERHLCIntegrationTests.java @@ -20,7 +20,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchERHLCIntegrationTests.java index 71052ddf2..85423ed32 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchERHLCIntegrationTests.java @@ -26,8 +26,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; @@ -55,6 +55,7 @@ protected Query getTermsAggsQuery(String aggsName, String aggsField) { return new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .addAggregation(AggregationBuilders.terms("messages").field("message")).build(); } + @Override protected BaseQueryBuilder getBuilderWithMatchAllQuery() { return new NativeSearchQueryBuilder().withQuery(matchAllQuery()); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java index 6aaf1ac41..ec263871c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java @@ -62,6 +62,9 @@ import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.Mapping; import org.springframework.data.elasticsearch.annotations.Setting; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.document.Explanation; import org.springframework.data.elasticsearch.core.index.AliasAction; import org.springframework.data.elasticsearch.core.index.AliasActionParameters; @@ -707,8 +710,7 @@ void shouldReturnSortFields() { entity.rate = 42; index(entity); - Query query = getBuilderWithMatchAllQuery().withSort(Sort.by(Sort.Direction.DESC, "rate")) - .build(); + Query query = getBuilderWithMatchAllQuery().withSort(Sort.by(Sort.Direction.DESC, "rate")).build(); operations.search(query, SampleEntity.class) // .as(StepVerifier::create) // diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateCallbackTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateCallbackTests.java index ab8b0bde7..e85c01aab 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateCallbackTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateCallbackTests.java @@ -55,8 +55,9 @@ import org.mockito.quality.Strictness; import org.springframework.data.annotation.Id; import org.springframework.data.domain.PageRequest; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.event.ReactiveAfterConvertCallback; import org.springframework.data.elasticsearch.core.event.ReactiveAfterSaveCallback; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java index 313e0075b..2bbaa69b3 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateUnitTests.java @@ -49,7 +49,8 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.ScriptedField; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.Criteria; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReindexERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReindexERHLCIntegrationTests.java index f50ed8d49..2a30260be 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReindexERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReindexERHLCIntegrationTests.java @@ -19,7 +19,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeERHLCIntegrationTests.java index 8f0f3ea6c..916561648 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeERHLCIntegrationTests.java @@ -20,7 +20,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationERHLCIntegrationTests.java index 4b91fa44a..c446986bb 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationERHLCIntegrationTests.java @@ -28,9 +28,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchAggregations; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.AggregationsContainer; -import org.springframework.data.elasticsearch.core.ElasticsearchAggregations; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/cluster/ClusterOperationsReactiveIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/cluster/ClusterOperationsReactiveIntegrationTests.java index 63944585d..c276180ee 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/cluster/ClusterOperationsReactiveIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/cluster/ClusterOperationsReactiveIntegrationTests.java @@ -26,6 +26,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveClusterOperations; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/document/DocumentAdaptersUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/document/DocumentAdaptersUnitTests.java index aa7f7aa50..24c82d680 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/document/DocumentAdaptersUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/document/DocumentAdaptersUnitTests.java @@ -33,6 +33,7 @@ import org.elasticsearch.search.SearchShardTarget; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.client.erhlc.DocumentAdapters; /** * Unit tests for {@link DocumentAdapters}. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoERHLCIntegrationTests.java index 4cfbca928..3ac4dbae1 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoERHLCIntegrationTests.java @@ -19,7 +19,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyERHLCIntegrationTests.java index 5706a7b53..63e77a67b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyERHLCIntegrationTests.java @@ -19,7 +19,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyERHLCIntegrationTests.java index 953be18b4..3a104a678 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyERHLCIntegrationTests.java @@ -19,7 +19,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilderTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilderTests.java index c4b7caf40..9770837fb 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilderTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/HighlightQueryBuilderTests.java @@ -28,6 +28,7 @@ import org.springframework.data.elasticsearch.annotations.Highlight; import org.springframework.data.elasticsearch.annotations.HighlightField; import org.springframework.data.elasticsearch.annotations.HighlightParameters; +import org.springframework.data.elasticsearch.client.erhlc.HighlightQueryBuilder; import org.springframework.data.elasticsearch.core.ResourceUtil; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.lang.Nullable; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilderTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilderTests.java index 6338e0efe..f14162739 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilderTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilderTests.java @@ -20,6 +20,8 @@ import java.util.List; import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import com.google.common.collect.Lists; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionERHLCIntegrationTests.java index 515ba2846..45b980184 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionERHLCIntegrationTests.java @@ -21,7 +21,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java index 31083afdf..6c5185787 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java @@ -40,8 +40,8 @@ import org.springframework.data.elasticsearch.annotations.CompletionContext; import org.springframework.data.elasticsearch.annotations.CompletionField; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.IndexQuery; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestERHLCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestERHLCIntegrationTests.java index a6c7c1d97..77bf8952e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestERHLCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestERHLCIntegrationTests.java @@ -21,7 +21,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchRestTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java index 1843b7f9f..c6918045d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java @@ -25,10 +25,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.data.elasticsearch.client.ClientConfiguration; -import org.springframework.data.elasticsearch.client.RestClients; -import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; @@ -36,7 +36,9 @@ * Configuration for Spring Data Elasticsearch using {@link ElasticsearchRestTemplate}. * * @author Peter-Josef Meisch + * @deprecated since 5.0 */ +@Deprecated @Configuration public class ElasticsearchRestTemplateConfiguration extends AbstractElasticsearchConfiguration { diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ReactiveElasticsearchRestTemplateConfiguration.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ReactiveElasticsearchRestTemplateConfiguration.java index 9248dfcfe..f5e460125 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ReactiveElasticsearchRestTemplateConfiguration.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ReactiveElasticsearchRestTemplateConfiguration.java @@ -22,9 +22,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; -import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; -import org.springframework.data.elasticsearch.client.reactive.ReactiveRestClients; -import org.springframework.data.elasticsearch.config.AbstractReactiveElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.AbstractReactiveElasticsearchConfiguration; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveElasticsearchClient; +import org.springframework.data.elasticsearch.client.erhlc.ReactiveRestClients; import org.springframework.data.elasticsearch.core.RefreshPolicy; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java index a1b762ff6..854c30c08 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java @@ -23,9 +23,9 @@ import org.elasticsearch.client.RestHighLevelClient; import org.springframework.data.elasticsearch.client.ClientConfiguration; -import org.springframework.data.elasticsearch.client.RestClients; +import org.springframework.data.elasticsearch.client.erhlc.RestClients; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnection; import org.springframework.data.elasticsearch.junit.jupiter.ClusterConnectionInfo; diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java index b071264b8..0d1b3aa03 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java @@ -37,12 +37,12 @@ import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.ScriptedField; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java index 4ffcddcd5..8a8a1b37d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java @@ -41,10 +41,10 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQuery; +import org.springframework.data.elasticsearch.client.erhlc.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; diff --git a/src/test/resources/org/springframework/data/elasticsearch/config/namespace/namespace.xml b/src/test/resources/org/springframework/data/elasticsearch/config/namespace/namespace.xml index 030289fd8..2803870dc 100644 --- a/src/test/resources/org/springframework/data/elasticsearch/config/namespace/namespace.xml +++ b/src/test/resources/org/springframework/data/elasticsearch/config/namespace/namespace.xml @@ -6,7 +6,7 @@ http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> + class="org.springframework.data.elasticsearch.client.erhlc.ElasticsearchRestTemplate">