mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-18 18:12:10 +00:00
Use ExistsRequest instead of GetRequest to check if documents exists.
Original Pull Re1uest #2728 Closes #2726
This commit is contained in:
parent
db3ad1338c
commit
6180f596d8
@ -125,7 +125,7 @@ public class ElasticsearchTemplate extends AbstractElasticsearchTemplate {
|
||||
public <T> T get(String id, Class<T> clazz, IndexCoordinates index) {
|
||||
|
||||
GetRequest getRequest = requestConverter.documentGetRequest(elasticsearchConverter.convertId(id),
|
||||
routingResolver.getRouting(), index, false);
|
||||
routingResolver.getRouting(), index);
|
||||
GetResponse<EntityAsMap> getResponse = execute(client -> client.get(getRequest, EntityAsMap.class));
|
||||
|
||||
ReadDocumentCallback<T> callback = new ReadDocumentCallback<>(elasticsearchConverter, clazz, index);
|
||||
@ -221,9 +221,9 @@ public class ElasticsearchTemplate extends AbstractElasticsearchTemplate {
|
||||
Assert.notNull(id, "id must not be null");
|
||||
Assert.notNull(index, "index must not be null");
|
||||
|
||||
GetRequest request = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, true);
|
||||
ExistsRequest request = requestConverter.documentExistsRequest(id, routingResolver.getRouting(), index);
|
||||
|
||||
return execute(client -> client.get(request, EntityAsMap.class)).found();
|
||||
return execute(client -> client.exists(request)).value();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -128,6 +128,13 @@ public class ReactiveElasticsearchClient extends ApiClient<ElasticsearchTranspor
|
||||
return Mono.fromFuture(transport.performRequestAsync(request, endpoint, transportOptions));
|
||||
}
|
||||
|
||||
public Mono<BooleanResponse> exists(ExistsRequest request) {
|
||||
|
||||
Assert.notNull(request, "request must not be null");
|
||||
|
||||
return Mono.fromFuture(transport.performRequestAsync(request, ExistsRequest._ENDPOINT, transportOptions));
|
||||
}
|
||||
|
||||
public <T, P> Mono<UpdateResponse<T>> update(UpdateRequest<T, P> request, Class<T> clazz) {
|
||||
|
||||
Assert.notNull(request, "request must not be null");
|
||||
|
@ -25,6 +25,7 @@ import co.elastic.clients.elasticsearch.core.get.GetResult;
|
||||
import co.elastic.clients.elasticsearch.core.search.ResponseBody;
|
||||
import co.elastic.clients.json.JsonpMapper;
|
||||
import co.elastic.clients.transport.Version;
|
||||
import co.elastic.clients.transport.endpoints.BooleanResponse;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import reactor.core.publisher.Flux;
|
||||
@ -148,9 +149,11 @@ public class ReactiveElasticsearchTemplate extends AbstractReactiveElasticsearch
|
||||
Assert.notNull(id, "id must not be null");
|
||||
Assert.notNull(index, "index must not be null");
|
||||
|
||||
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, true);
|
||||
ExistsRequest existsRequest = requestConverter.documentExistsRequest(id, routingResolver.getRouting(), index);
|
||||
|
||||
return Mono.from(execute(client -> client.get(getRequest, EntityAsMap.class))).map(GetResult::found) //
|
||||
return Mono.from(execute(
|
||||
((ClientCallback<Publisher<BooleanResponse>>) client -> client.exists(existsRequest))))
|
||||
.map(BooleanResponse::value) //
|
||||
.onErrorReturn(NoSuchIndexException.class, false);
|
||||
}
|
||||
|
||||
@ -171,7 +174,7 @@ public class ReactiveElasticsearchTemplate extends AbstractReactiveElasticsearch
|
||||
Assert.notNull(entityType, "entityType must not be null");
|
||||
Assert.notNull(index, "index must not be null");
|
||||
|
||||
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, false);
|
||||
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index);
|
||||
|
||||
Mono<GetResponse<EntityAsMap>> getResponse = Mono
|
||||
.from(execute(client -> client.get(getRequest, EntityAsMap.class)));
|
||||
|
@ -780,25 +780,26 @@ class RequestConverter {
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public GetRequest documentGetRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates,
|
||||
boolean forExistsRequest) {
|
||||
public GetRequest documentGetRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates) {
|
||||
|
||||
Assert.notNull(id, "id must not be null");
|
||||
Assert.notNull(indexCoordinates, "indexCoordinates must not be null");
|
||||
|
||||
return GetRequest.of(grb -> {
|
||||
grb //
|
||||
return GetRequest.of(grb -> grb //
|
||||
.index(indexCoordinates.getIndexName()) //
|
||||
.id(id) //
|
||||
.routing(routing);
|
||||
.routing(routing));
|
||||
}
|
||||
|
||||
if (forExistsRequest) {
|
||||
grb.source(scp -> scp.fetch(false));
|
||||
}
|
||||
public co.elastic.clients.elasticsearch.core.ExistsRequest documentExistsRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates) {
|
||||
|
||||
return grb;
|
||||
});
|
||||
Assert.notNull(id, "id must not be null");
|
||||
Assert.notNull(indexCoordinates, "indexCoordinates must not be null");
|
||||
|
||||
return co.elastic.clients.elasticsearch.core.ExistsRequest.of(erb -> erb
|
||||
.index(indexCoordinates.getIndexName())
|
||||
.id(id)
|
||||
.routing(routing));
|
||||
}
|
||||
|
||||
public <T> MgetRequest documentMgetRequest(Query query, Class<T> clazz, IndexCoordinates index) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user