Skip to content

Commit 0a17e2a

Browse files
committed
Use ExistsRequest replace GetRequest to check documents exists.
1 parent 406961c commit 0a17e2a

File tree

4 files changed

+26
-17
lines changed

4 files changed

+26
-17
lines changed

src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ private ClusterTemplate getClusterTemplate() {
139139
public <T> T get(String id, Class<T> clazz, IndexCoordinates index) {
140140

141141
GetRequest getRequest = requestConverter.documentGetRequest(elasticsearchConverter.convertId(id),
142-
routingResolver.getRouting(), index, false);
142+
routingResolver.getRouting(), index);
143143
GetResponse<EntityAsMap> getResponse = execute(client -> client.get(getRequest, EntityAsMap.class));
144144

145145
ReadDocumentCallback<T> callback = new ReadDocumentCallback<>(elasticsearchConverter, clazz, index);
@@ -235,9 +235,9 @@ protected boolean doExists(String id, IndexCoordinates index) {
235235
Assert.notNull(id, "id must not be null");
236236
Assert.notNull(index, "index must not be null");
237237

238-
GetRequest request = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, true);
238+
ExistsRequest request = requestConverter.documentExistsRequest(id, routingResolver.getRouting(), index);
239239

240-
return execute(client -> client.get(request, EntityAsMap.class)).found();
240+
return execute(client -> client.exists(request)).value();
241241
}
242242

243243
@Override

src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClient.java

+7
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@ public <T> Mono<GetResponse<T>> get(GetRequest request, Class<T> tClass) {
128128
return Mono.fromFuture(transport.performRequestAsync(request, endpoint, transportOptions));
129129
}
130130

131+
public Mono<BooleanResponse> exists(ExistsRequest request) {
132+
133+
Assert.notNull(request, "request must not be null");
134+
135+
return Mono.fromFuture(transport.performRequestAsync(request, ExistsRequest._ENDPOINT, transportOptions));
136+
}
137+
131138
public <T, P> Mono<UpdateResponse<T>> update(UpdateRequest<T, P> request, Class<T> clazz) {
132139

133140
Assert.notNull(request, "request must not be null");

src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import co.elastic.clients.elasticsearch.core.search.ResponseBody;
2626
import co.elastic.clients.json.JsonpMapper;
2727
import co.elastic.clients.transport.Version;
28+
import co.elastic.clients.transport.endpoints.BooleanResponse;
2829
import reactor.core.publisher.Flux;
2930
import reactor.core.publisher.Mono;
3031
import reactor.util.function.Tuple2;
@@ -147,11 +148,11 @@ protected Mono<Boolean> doExists(String id, IndexCoordinates index) {
147148
Assert.notNull(id, "id must not be null");
148149
Assert.notNull(index, "index must not be null");
149150

150-
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, true);
151+
ExistsRequest existsRequest = requestConverter.documentExistsRequest(id, routingResolver.getRouting(), index);
151152

152153
return Mono.from(execute(
153-
((ClientCallback<Publisher<GetResponse<EntityAsMap>>>) client -> client.get(getRequest, EntityAsMap.class))))
154-
.map(GetResult::found) //
154+
((ClientCallback<Publisher<BooleanResponse>>) client -> client.exists(existsRequest))))
155+
.map(BooleanResponse::value) //
155156
.onErrorReturn(NoSuchIndexException.class, false);
156157
}
157158

@@ -174,7 +175,7 @@ public <T> Mono<T> get(String id, Class<T> entityType, IndexCoordinates index) {
174175
Assert.notNull(entityType, "entityType must not be null");
175176
Assert.notNull(index, "index must not be null");
176177

177-
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index, false);
178+
GetRequest getRequest = requestConverter.documentGetRequest(id, routingResolver.getRouting(), index);
178179

179180
Mono<GetResponse<EntityAsMap>> getResponse = Mono.from(execute(
180181
(ClientCallback<Publisher<GetResponse<EntityAsMap>>>) client -> client.get(getRequest, EntityAsMap.class)));

src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -763,25 +763,26 @@ public BulkRequest documentBulkRequest(List<?> queries, BulkOptions bulkOptions,
763763
return builder.build();
764764
}
765765

766-
public GetRequest documentGetRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates,
767-
boolean forExistsRequest) {
766+
public GetRequest documentGetRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates) {
768767

769768
Assert.notNull(id, "id must not be null");
770769
Assert.notNull(indexCoordinates, "indexCoordinates must not be null");
771770

772-
return GetRequest.of(grb -> {
773-
grb //
771+
return GetRequest.of(grb -> grb //
774772
.index(indexCoordinates.getIndexName()) //
775773
.id(id) //
776-
.routing(routing);
774+
.routing(routing));
775+
}
777776

778-
if (forExistsRequest) {
779-
grb.source(scp -> scp.fetch(false));
780-
}
777+
public co.elastic.clients.elasticsearch.core.ExistsRequest documentExistsRequest(String id, @Nullable String routing, IndexCoordinates indexCoordinates) {
781778

782-
return grb;
783-
});
779+
Assert.notNull(id, "id must not be null");
780+
Assert.notNull(indexCoordinates, "indexCoordinates must not be null");
784781

782+
return co.elastic.clients.elasticsearch.core.ExistsRequest.of(erb -> erb
783+
.index(indexCoordinates.getIndexName())
784+
.id(id)
785+
.routing(routing));
785786
}
786787

787788
public <T> MgetRequest documentMgetRequest(Query query, Class<T> clazz, IndexCoordinates index) {

0 commit comments

Comments
 (0)