mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-11-26 19:51:23 +00:00
84 lines
2.5 KiB
Plaintext
84 lines
2.5 KiB
Plaintext
|
|
[[elasticsearch.clients]]
|
||
|
|
= Elasticsearch Clients
|
||
|
|
|
||
|
|
This chapter illustrates configuration and usage of supported Elasticsearch client implementations.
|
||
|
|
|
||
|
|
Spring data Elasticsearch operates upon an Elasticsearch client that is connected to a single Elasticsearch node or a cluster.
|
||
|
|
|
||
|
|
WARNING: The well known `TransportClient` is deprecated as of Elasticsearch 7.0.0 and is expected to be removed in Elasticsearch 8.0.
|
||
|
|
|
||
|
|
[[elasticsearch.clients.rest]]
|
||
|
|
== High Level REST Client
|
||
|
|
|
||
|
|
The Java High Level REST Client provides a straight forward replacement for the `TransportClient` as it accepts and returns
|
||
|
|
the very same request/response objects and therefore depends on the Elasticsearch core project.
|
||
|
|
Asynchronous calls are operated upon a client managed thread pool and require a callback to be notified when the request is done.
|
||
|
|
|
||
|
|
.High Level REST Client
|
||
|
|
====
|
||
|
|
[source,java]
|
||
|
|
----
|
||
|
|
static class Config {
|
||
|
|
|
||
|
|
@Bean
|
||
|
|
RestHighLevelClient client() {
|
||
|
|
|
||
|
|
ClientConfiguration clientConfiguration = ClientConfiguration.builder() <1>
|
||
|
|
.connectedTo("localhost:9200", "localhost:9201")
|
||
|
|
.build();
|
||
|
|
|
||
|
|
return RestClients.create(clientConfiguration).rest(); <2>
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ...
|
||
|
|
|
||
|
|
IndexRequest request = new IndexRequest("spring-data", "elasticsearch", randomID())
|
||
|
|
.source(singletonMap("feature", "high-level-rest-client"))
|
||
|
|
.setRefreshPolicy(IMMEDIATE);
|
||
|
|
|
||
|
|
IndexResponse response = client.index(request);
|
||
|
|
----
|
||
|
|
<1> Use the builder to provide cluster addresses, set default `HttpHeaders` or enbale SSL.
|
||
|
|
<2> Next to the `rest()` client it is also possible to obtain the `lowLevelRest()` client.
|
||
|
|
====
|
||
|
|
|
||
|
|
[[elasticsearch.clients.reactive]]
|
||
|
|
== Reactive Client
|
||
|
|
|
||
|
|
The `ReactiveElasticsearchClient` is a non official driver based on `WebClient`.
|
||
|
|
It uses the request/response objects provided by the Elasticsearch core project.
|
||
|
|
Calls are directly operated on the reactive stack, **not** wrapping async (thread pool bound) responses into reactive types.
|
||
|
|
|
||
|
|
.Reactive REST Client
|
||
|
|
====
|
||
|
|
[source,java]
|
||
|
|
----
|
||
|
|
static class Config {
|
||
|
|
|
||
|
|
@Bean
|
||
|
|
ReactiveElasticsearchClient client() {
|
||
|
|
|
||
|
|
ClientConfiguration clientConfiguration = ClientConfiguration.builder() <1>
|
||
|
|
.connectedTo("localhost:9200", "localhost:9291")
|
||
|
|
.build();
|
||
|
|
|
||
|
|
return ReactiveRestClients.create(clientConfiguration);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ...
|
||
|
|
|
||
|
|
Mono<IndexResponse> response = client.index(request ->
|
||
|
|
|
||
|
|
request.index("spring-data")
|
||
|
|
.type("elasticsearch")
|
||
|
|
.id(randomID())
|
||
|
|
.source(singletonMap("feature", "reactive-client"))
|
||
|
|
.setRefreshPolicy(IMMEDIATE);
|
||
|
|
);
|
||
|
|
----
|
||
|
|
<1> Use the builder to provide cluster addresses, set default `HttpHeaders` or enbale SSL.
|
||
|
|
====
|
||
|
|
|