mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 12:02: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}.
|
* Reactive version of {@link co.elastic.clients.elasticsearch.ElasticsearchClient}.
|
||||||
*
|
*
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
|
* @author maryantocinn
|
||||||
* @since 4.4
|
* @since 4.4
|
||||||
*/
|
*/
|
||||||
public class ReactiveElasticsearchClient extends ApiClient<ElasticsearchTransport, ReactiveElasticsearchClient>
|
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());
|
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
|
// endregion
|
||||||
// region search
|
// 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._types.mapping.TypeMapping;
|
||||||
import co.elastic.clients.elasticsearch.cluster.HealthRequest;
|
import co.elastic.clients.elasticsearch.cluster.HealthRequest;
|
||||||
import co.elastic.clients.elasticsearch.cluster.HealthResponse;
|
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.IndexRequest;
|
||||||
import co.elastic.clients.elasticsearch.core.IndexResponse;
|
import co.elastic.clients.elasticsearch.core.IndexResponse;
|
||||||
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
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.
|
* on port 9200 and an intercepting proxy on port 8080.
|
||||||
*
|
*
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
|
* @author maryantocinn
|
||||||
*/
|
*/
|
||||||
@Disabled
|
@Disabled
|
||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
@ -352,6 +355,43 @@ public class DevTests {
|
|||||||
private ResponseBody<EntityAsMap> searchReactive(SearchRequest searchRequest) {
|
private ResponseBody<EntityAsMap> searchReactive(SearchRequest searchRequest) {
|
||||||
return Objects.requireNonNull(reactiveElasticsearchClient.search(searchRequest, EntityAsMap.class).block());
|
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
|
// endregion
|
||||||
|
|
||||||
private ClientConfiguration clientConfiguration() {
|
private ClientConfiguration clientConfiguration() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user