mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-21 19:42:10 +00:00
Add count methods to ELC's ReactiveElasticsearchClient.
Original Pull Request #2985 Closes #2749
This commit is contained in:
parent
98716a871b
commit
fe8c2b13b0
@ -36,6 +36,7 @@ import org.springframework.util.Assert;
|
||||
* Reactive version of {@link co.elastic.clients.elasticsearch.ElasticsearchClient}.
|
||||
*
|
||||
* @author Peter-Josef Meisch
|
||||
* @author maryantocinn
|
||||
* @since 4.4
|
||||
*/
|
||||
public class ReactiveElasticsearchClient extends ApiClient<ElasticsearchTransport, ReactiveElasticsearchClient>
|
||||
@ -227,6 +228,26 @@ public class ReactiveElasticsearchClient extends ApiClient<ElasticsearchTranspor
|
||||
return deleteByQuery(fn.apply(new DeleteByQueryRequest.Builder()).build());
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
public Mono<CountResponse> count(CountRequest request) {
|
||||
|
||||
Assert.notNull(request, "request must not be null");
|
||||
|
||||
return Mono.fromFuture(transport.performRequestAsync(request, CountRequest._ENDPOINT, transportOptions));
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
public Mono<CountResponse> count(Function<CountRequest.Builder, ObjectBuilder<CountRequest>> fn) {
|
||||
|
||||
Assert.notNull(fn, "fn must not be null");
|
||||
|
||||
return count(fn.apply(new CountRequest.Builder()).build());
|
||||
}
|
||||
|
||||
// endregion
|
||||
// region search
|
||||
|
||||
|
@ -22,6 +22,8 @@ import co.elastic.clients.elasticsearch._types.FieldValue;
|
||||
import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
|
||||
import co.elastic.clients.elasticsearch.cluster.HealthRequest;
|
||||
import co.elastic.clients.elasticsearch.cluster.HealthResponse;
|
||||
import co.elastic.clients.elasticsearch.core.CountRequest;
|
||||
import co.elastic.clients.elasticsearch.core.CountResponse;
|
||||
import co.elastic.clients.elasticsearch.core.IndexRequest;
|
||||
import co.elastic.clients.elasticsearch.core.IndexResponse;
|
||||
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
||||
@ -62,6 +64,7 @@ import org.springframework.lang.Nullable;
|
||||
* on port 9200 and an intercepting proxy on port 8080.
|
||||
*
|
||||
* @author Peter-Josef Meisch
|
||||
* @author maryantocinn
|
||||
*/
|
||||
@Disabled
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
@ -352,6 +355,43 @@ public class DevTests {
|
||||
private ResponseBody<EntityAsMap> searchReactive(SearchRequest searchRequest) {
|
||||
return Objects.requireNonNull(reactiveElasticsearchClient.search(searchRequest, EntityAsMap.class).block());
|
||||
}
|
||||
|
||||
// endregion
|
||||
// region count
|
||||
@Test
|
||||
@Order(40)
|
||||
void count() {
|
||||
|
||||
CountRequest countRequest = new CountRequest.Builder().index(INDEX)
|
||||
.query(query -> query.match(matchQuery -> matchQuery.field("content").query(FieldValue.of("content1"))))
|
||||
.build();
|
||||
|
||||
CountResponse countResponse = null;
|
||||
|
||||
try {
|
||||
countResponse = countImperative(countRequest);
|
||||
assertThat(countResponse).isNotNull();
|
||||
assertThat(countResponse.count()).isEqualTo(1);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("error", e);
|
||||
}
|
||||
|
||||
try {
|
||||
countResponse = countReactive(countRequest);
|
||||
assertThat(countResponse).isNotNull();
|
||||
assertThat(countResponse.count()).isEqualTo(1);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("error", e);
|
||||
}
|
||||
}
|
||||
|
||||
private CountResponse countImperative(CountRequest countRequest) throws IOException {
|
||||
return imperativeElasticsearchClient.count(countRequest);
|
||||
}
|
||||
|
||||
private CountResponse countReactive(CountRequest countRequest) {
|
||||
return Objects.requireNonNull(reactiveElasticsearchClient.count(countRequest).block());
|
||||
}
|
||||
// endregion
|
||||
|
||||
private ClientConfiguration clientConfiguration() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user