diff --git a/pom.xml b/pom.xml index 3b308db0cd..8de17af650 100644 --- a/pom.xml +++ b/pom.xml @@ -20,17 +20,12 @@ 3.2.0-SNAPSHOT - - 7.17.9 - + 8.7.1 - 2.18.0 - - 4.1.90.Final - 1.0.8.RELEASE 0.14.4 + 2.18.0 1.5.1 1.18.0 2.35.0 @@ -93,18 +88,6 @@ https://github.com/spring-projects/spring-data-elasticsearch/issues - - - - io.netty - netty-bom - ${netty} - pom - import - - - - @@ -132,33 +115,12 @@ true - - io.projectreactor.netty - reactor-netty-http - true - - io.projectreactor reactor-test test - - - org.elasticsearch.client - elasticsearch-rest-high-level-client - ${elasticsearch-rhlc} - true - - - commons-logging - commons-logging - - - - - co.elastic.clients elasticsearch-java @@ -340,6 +302,14 @@ test + + + commons-codec + commons-codec + 1.15 + test + + diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java index b6b57f96a5..663b0ae40d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.client.elc; -import static org.springframework.data.elasticsearch.client.elc.TypeUtils.*; +import static org.springframework.data.elasticsearch.client.elc.TypeUtils.result; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.Time; @@ -28,35 +28,20 @@ import java.io.IOException; import java.time.Duration; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.data.elasticsearch.BulkFailureException; import org.springframework.data.elasticsearch.client.UnsupportedBackendOperation; -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.SearchHits; -import org.springframework.data.elasticsearch.core.SearchScrollHits; +import org.springframework.data.elasticsearch.core.*; import org.springframework.data.elasticsearch.core.cluster.ClusterOperations; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse; 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.Query; -import org.springframework.data.elasticsearch.core.query.SearchTemplateQuery; -import org.springframework.data.elasticsearch.core.query.UpdateQuery; +import org.springframework.data.elasticsearch.core.query.*; import org.springframework.data.elasticsearch.core.query.UpdateResponse; import org.springframework.data.elasticsearch.core.reindex.ReindexRequest; import org.springframework.data.elasticsearch.core.reindex.ReindexResponse; @@ -638,6 +623,11 @@ public Query idsQuery(List ids) { return NativeQuery.builder().withQuery(qb -> qb.ids(iq -> iq.values(ids))).build(); } + @Override + public BaseQueryBuilder queryBuilderWithIds(List ids) { + return NativeQuery.builder().withIds(ids); + } + /** * extract the list of {@link IndexedObjectInformation} from a {@link BulkResponse}. * 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 1fdb0b1166..5cf1bc85f0 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 @@ -100,7 +100,7 @@ protected Mono> doIndex(T entity, IndexCoor getRefreshPolicy()); return Mono.just(entity) // .zipWith(// - Mono.from(execute((ClientCallback>) client -> client.index(indexRequest))) // + Mono.from(execute(client -> client.index(indexRequest))) // .map(indexResponse -> new IndexResponseMetaData(indexResponse.id(), // indexResponse.index(), // indexResponse.seqNo(), // @@ -149,9 +149,7 @@ protected Mono doExists(String id, IndexCoordinates index) { GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, true); - return Mono.from(execute( - ((ClientCallback>>) client -> client.get(getRequest, EntityAsMap.class)))) - .map(GetResult::found) // + return Mono.from(execute(client -> client.get(getRequest, EntityAsMap.class))).map(GetResult::found) // .onErrorReturn(NoSuchIndexException.class, false); } @@ -162,9 +160,7 @@ public Mono delete(Query query, Class entityType, IndexCoord DeleteByQueryRequest request = requestConverter.documentDeleteByQueryRequest(query, routingResolver.getRouting(), entityType, index, getRefreshPolicy()); - return Mono - .from(execute((ClientCallback>) client -> client.deleteByQuery(request))) - .map(responseConverter::byQueryResponse); + return Mono.from(execute(client -> client.deleteByQuery(request))).map(responseConverter::byQueryResponse); } @Override @@ -176,8 +172,8 @@ public Mono get(String id, Class entityType, IndexCoordinates index) { GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, false); - Mono> getResponse = Mono.from(execute( - (ClientCallback>>) client -> client.get(getRequest, EntityAsMap.class))); + Mono> getResponse = Mono + .from(execute(client -> client.get(getRequest, EntityAsMap.class))); ReadDocumentCallback callback = new ReadDocumentCallback<>(converter, entityType, index); return getResponse.flatMap(response -> callback.toEntity(DocumentAdapters.from(response))); @@ -192,9 +188,7 @@ public Mono reindex(ReindexRequest reindexRequest) { true); return Mono.from(execute( // - (ClientCallback>) client -> client - .reindex(reindexRequestES))) - .map(responseConverter::reindexResponse); + client -> client.reindex(reindexRequestES))).map(responseConverter::reindexResponse); } @Override @@ -206,8 +200,7 @@ public Mono submitReindex(ReindexRequest reindexRequest) { false); return Mono.from(execute( // - (ClientCallback>) client -> client - .reindex(reindexRequestES))) + client -> client.reindex(reindexRequestES))) .flatMap(response -> (response.task() == null) ? Mono.error( new UnsupportedBackendOperation("ElasticsearchClient did not return a task id on submit request")) @@ -223,13 +216,10 @@ public Mono update(UpdateQuery updateQuery, IndexCoordinates ind UpdateRequest request = requestConverter.documentUpdateRequest(updateQuery, index, getRefreshPolicy(), routingResolver.getRouting()); - return Mono.from(execute( - (ClientCallback>>) client -> client - .update(request, Document.class))) - .flatMap(response -> { - UpdateResponse.Result result = result(response.result()); - return result == null ? Mono.empty() : Mono.just(UpdateResponse.of(result)); - }); + return Mono.from(execute(client -> client.update(request, Document.class))).flatMap(response -> { + UpdateResponse.Result result = result(response.result()); + return result == null ? Mono.empty() : Mono.just(UpdateResponse.of(result)); + }); } @Override @@ -292,7 +282,7 @@ protected Mono doDeleteById(String id, @Nullable String routing, IndexCo private Mono doDelete(DeleteRequest request) { - return Mono.from(execute((ClientCallback>) client -> client.delete(request))) // + return Mono.from(execute(client -> client.delete(request))) // .flatMap(deleteResponse -> { if (deleteResponse.result() == Result.NotFound) { return Mono.empty(); @@ -311,8 +301,7 @@ public Flux> multiGet(Query query, Class clazz, IndexCoor ReadDocumentCallback callback = new ReadDocumentCallback<>(converter, clazz, index); - Publisher> response = execute( - (ClientCallback>>) client -> client.mget(request, EntityAsMap.class)); + Publisher> response = execute(client -> client.mget(request, EntityAsMap.class)); return Mono.from(response)// .flatMapMany(it -> Flux.fromIterable(DocumentAdapters.from(it))) // @@ -364,14 +353,14 @@ private Flux doFindUnbounded(Query query, Class clazz, IndexC BiFunction> asyncError = (psa, ex) -> { if (LOGGER.isErrorEnabled()) { - LOGGER.error(String.format("Error during pit/search_after"), ex); + LOGGER.error("Error during pit/search_after", ex); } return cleanupPit(psa); }; Function> asyncCancel = psa -> { if (LOGGER.isWarnEnabled()) { - LOGGER.warn(String.format("pit/search_after was cancelled")); + LOGGER.warn("pit/search_after was cancelled"); } return cleanupPit(psa); }; @@ -383,8 +372,8 @@ private Flux doFindUnbounded(Query query, Class clazz, IndexC SearchRequest firstSearchRequest = requestConverter.searchRequest(baseQuery, routingResolver.getRouting(), clazz, index, false, true); - return Mono.from(execute((ClientCallback>>) client -> client - .search(firstSearchRequest, EntityAsMap.class))).expand(entityAsMapSearchResponse -> { + return Mono.from(execute(client -> client.search(firstSearchRequest, EntityAsMap.class))) + .expand(entityAsMapSearchResponse -> { var hits = entityAsMapSearchResponse.hits().hits(); if (CollectionUtils.isEmpty(hits)) { @@ -396,8 +385,7 @@ private Flux doFindUnbounded(Query query, Class clazz, IndexC baseQuery.setSearchAfter(sortOptions); SearchRequest followSearchRequest = requestConverter.searchRequest(baseQuery, routingResolver.getRouting(), clazz, index, false, true); - return Mono.from(execute((ClientCallback>>) client -> client - .search(followSearchRequest, EntityAsMap.class))); + return Mono.from(execute(client -> client.search(followSearchRequest, EntityAsMap.class))); }); }; @@ -454,9 +442,7 @@ protected Mono doCount(Query query, Class entityType, IndexCoordinates SearchRequest searchRequest = requestConverter.searchRequest(query, routingResolver.getRouting(), entityType, index, true); - return Mono - .from(execute((ClientCallback>>) client -> client.search(searchRequest, - EntityAsMap.class))) + return Mono.from(execute(client -> client.search(searchRequest, EntityAsMap.class))) .map(searchResponse -> searchResponse.hits().total() != null ? searchResponse.hits().total().value() : 0L); } @@ -465,9 +451,7 @@ private Flux doFindBounded(Query query, Class clazz, IndexCoo SearchRequest searchRequest = requestConverter.searchRequest(query, routingResolver.getRouting(), clazz, index, false, false); - return Mono - .from(execute((ClientCallback>>) client -> client.search(searchRequest, - EntityAsMap.class))) // + return Mono.from(execute(client -> client.search(searchRequest, EntityAsMap.class))) // .flatMapIterable(entityAsMapSearchResponse -> entityAsMapSearchResponse.hits().hits()) // .map(entityAsMapHit -> DocumentAdapters.from(entityAsMapHit, jsonpMapper)); } @@ -476,9 +460,7 @@ private Flux doSearch(SearchTemplateQuery query, Class clazz, var request = requestConverter.searchTemplate(query, routingResolver.getRouting(), index); - return Mono - .from(execute((ClientCallback>>) client -> client - .searchTemplate(request, EntityAsMap.class))) // + return Mono.from(execute(client -> client.searchTemplate(request, EntityAsMap.class))) // .flatMapIterable(entityAsMapSearchResponse -> entityAsMapSearchResponse.hits().hits()) // .map(entityAsMapHit -> DocumentAdapters.from(entityAsMapHit, jsonpMapper)); } @@ -497,9 +479,7 @@ protected Mono doFindForResponse(Query query, Class< SearchDocumentResponse.EntityCreator entityCreator = searchDocument -> callback.toEntity(searchDocument) .toFuture(); - return Mono - .from(execute((ClientCallback>>) client -> client.search(searchRequest, - EntityAsMap.class))) + return Mono.from(execute(client -> client.search(searchRequest, EntityAsMap.class))) .map(searchResponse -> SearchDocumentResponseBuilder.from(searchResponse, entityCreator, jsonpMapper)); } @@ -520,9 +500,7 @@ public Mono openPointInTime(IndexCoordinates index, Duration keepAlive, Assert.notNull(ignoreUnavailable, "ignoreUnavailable must not be null"); var request = requestConverter.searchOpenPointInTimeRequest(index, keepAlive, ignoreUnavailable); - return Mono - .from(execute((ClientCallback>) client -> client.openPointInTime(request))) - .map(OpenPointInTimeResponse::id); + return Mono.from(execute(client -> client.openPointInTime(request))).map(OpenPointInTimeResponse::id); } @Override @@ -531,9 +509,7 @@ public Mono closePointInTime(String pit) { Assert.notNull(pit, "pit must not be null"); ClosePointInTimeRequest request = requestConverter.searchClosePointInTime(pit); - return Mono - .from(execute((ClientCallback>) client -> client.closePointInTime(request))) - .map(ClosePointInTimeResponse::succeeded); + return Mono.from(execute(client -> client.closePointInTime(request))).map(ClosePointInTimeResponse::succeeded); } // endregion @@ -545,8 +521,7 @@ public Mono putScript(Script script) { Assert.notNull(script, "script must not be null"); var request = requestConverter.scriptPut(script); - return Mono.from(execute((ClientCallback>) client -> client.putScript(request))) - .map(PutScriptResponse::acknowledged); + return Mono.from(execute(client -> client.putScript(request))).map(PutScriptResponse::acknowledged); } @Override @@ -555,8 +530,7 @@ public Mono