Commit Graph

236 Commits

Author SHA1 Message Date
Christoph Strobl
ce124a2d9e DATAES-512 - Fix request parameters not getting added to the URI as query string parameters.
We now make sure to include request parameters in the constructed URI and add potential request option headers.
2018-12-11 07:17:10 +01:00
Christoph Strobl
1ea73d2fb9 DATAES-504 - Update documentation.
Update documentation to cover newly added configuration options for the ReactiveElasticsearchClient.
Make sure to apply postFilter correctly and set a default limit for unpaged search requests.

Also fix some code format issues.
2018-12-11 07:17:10 +01:00
Mark Paluch
2dcd1cfbad DATAES-504 - Add configuration options for logging and timeouts to ReactiveElasticsearchClient.
We now log HTTP requests and responses with the org.springframework.data.elasticsearch.client.WIRE logger for both, the HighLevelRestClient and our reactive client and associate a logging Id for improved traceability.

Configuration of connection/socket timeouts is now available via the ClientConfiguration.

Along the lines we also aligned entity handling to EntityOperations already common in other modules. EntityOperations centralizes how aspects of entities (versioning, retrieval of index name/index type) are handled.

Original Pull Request: #229
2018-12-11 07:17:10 +01:00
Christoph Strobl
ba890cb7eb DATAES-504 - Add ReactiveElasticsearchOperations & ReactiveElasticsearchTemplate
ReactiveElasticsearchOperations is the gateway to executing high level commands against an Elasticsearch cluster using the ReactiveElasticsearchClient.

The ReactiveElasticsearchTemplate is the default implementation of ReactiveElasticsearchOperations and offers the following set of features.

* Read/Write mapping support for domain types.
* A rich query and criteria api.
* Resource management and Exception translation.

To get started the ReactiveElasticsearchTemplate needs to know about the actual client to work with.
The easiest way of setting up the ReactiveElasticsearchTemplate is via AbstractReactiveElasticsearchConfiguration providing
dedicated configuration method hooks for base package, the initial entity set etc.

@Configuration
public class Config extends AbstractReactiveElasticsearchConfiguration {

    @Bean
    @Override
    public ReactiveElasticsearchClient reactiveElasticsearchClient() {
        // ...
    }
}

NOTE: If applicable set default HttpHeaders via the ClientConfiguration of the ReactiveElasticsearchClient.

TIP: If needed the ReactiveElasticsearchTemplate can be configured with default RefreshPolicy and IndicesOptions that get applied to the related requests by overriding the defaults of refreshPolicy() and indicesOptions().

The ReactiveElasticsearchTemplate lets you save, find and delete your domain objects and map those objects to documents stored in Elasticsearch.

@Document(indexName = "marvel", type = "characters")
public class Person {

    private @Id String id;
    private String name;
    private int age;

    // Getter/Setter omitted...
}

template.save(new Person("Bruce Banner", 42)) // save a new document
    .doOnNext(System.out::println)
    .flatMap(person -> template.findById(person.id, Person.class)) // then go find it
    .doOnNext(System.out::println)
    .flatMap(person -> template.delete(person)) // just to remove remove it again
    .doOnNext(System.out::println)
    .flatMap(id -> template.count(Person.class)) // so we've got nothing at the end
    .doOnNext(System.out::println)
    .subscribe(); // yeah :)

The above outputs the following sequence on the console.

> Person(id=QjWCWWcBXiLAnp77ksfR, name=Bruce Banner, age=42)
> Person(id=QjWCWWcBXiLAnp77ksfR, name=Bruce Banner, age=42)
> QjWCWWcBXiLAnp77ksfR
> 0

Original Pull Request: #229
2018-12-11 07:17:10 +01:00
Christoph Strobl
a39c34058b DATAES-488 - Polishing & Documentation.
Rename VerificationMode -> Verification. Reorder methods in ReactiveElasticsearchClient, add test for DefaultWebClientProvider. Enforce assertions and fix some overall code style issues.
Add client reference documentation section.
2018-12-11 07:17:10 +01:00
Mark Paluch
390d7e8273 DATAES-488 - Polishing.
Convert spaces to tabs for pom.xml. Switch reactive dependencies to optional. Remove unused commonscollections property. Use managed versions for reactor and Spring dependencies.

Introduce WebClientProvider to avoid reinstantiation of WebClient instances. Introduce ClientConfiguration to encapsulate common Elasticsearch client configuration properties. Split ElasticsearchClients into RestClients and ReactiveRestClients to avoid mandatory dependency on WebFlux/Project Reactor. Adapt tests and code referring to WebClient creation.

Extract response body as byte array instead of Flux of DataBuffer to avoid chunking and to parse an entire response.

Encapsulate hostAndPort string used across configuration/HostProvider with InetSocketAddress. Add parser for InetSocketAddress.

Original Pull Request: #226
2018-12-11 07:17:10 +01:00
Christoph Strobl
691a8c57bc DATAES-488 - Add reactive Elasticsearch client support.
Initial implementation of a ReactiveElasticsearchClient using WebClient to connect to cluster nodes.

ReactiveElasticsearchClient client = ElasticsearchClients.createClient()
  .connectedTo("http://localhost:9200", "http://localhost:9201")
  .reactive();
A HostProvider selects active nodes and routes requests.

client.index(request ->

  request.index("spring-data")
    .type("elasticsearch")
    .id(randomUUID().toString())
    .source(singletonMap("feature", "reactive-client"))
    .setRefreshPolicy(IMMEDIATE);
);
This implementation provides the first building block for reactive Template and Repository support to be added subsequently.

Along the lines we upgraded to Elasticsearch 6.5.

Original Pull Request: #226
2018-12-11 07:17:10 +01:00
xhaggi
89d0633fd5 DATAES-33 - Polishing
* Move @Parent property recognition to ElasticsearchPersistentProperty
* Move type contraints for @Version and @Parent fields to ElasticsearchPersistentProperty to fail faster
* remove unused constant SUPPORTED_ID_TYPES from SimpleElasticsearchPersistentProperty

Original pull request: #208
2018-11-20 11:45:26 +01:00
xhaggi
527f669f76 DATAES-503 - Added missing copy_to property to @Field annotation.
Original pull request: #227
2018-11-20 11:23:05 +01:00
xhaggi
dcf4cbe32a DATAES-492 - Add missing normalizer property to @Field and @InnerField.
Original pull request: #222
2018-11-20 09:21:51 +01:00
Artur Konczak
32a4f4ea7a DATAES-407 - improved tests for rest/transport template 2018-09-29 10:12:57 +01:00
Artur Konczak
4d4a6390e1 DATAES-407 - removed dependency with apache commons 2018-09-29 10:12:57 +01:00
Don Wellington
2f0b9b718b DATAES-407 - Support for HighLevelRestClient via ElasticsearchRestTemplate
Original pull request: #216
2018-09-29 10:10:54 +01:00
jnizet
b8324f9205 DATAES-479 - Allow specifying a HighlightBuilder when creating a query.
Original pull request: #217.
2018-08-24 15:59:12 +02:00
Oliver Gierke
469455383f DATAES-470 - Fixed parsing of cluster nodes in TransportClientFactoryBean.
Extracted ClusterNodes value object to capture the parsing logic and actually properly test it. Added unit tests to verify the proper rejection and the two cases outlined in the ticket.

Related tickets: DATAES-283.
2018-07-12 21:48:31 +02:00
xhaggi
ba3eba5734 DATAES-467 - Fix sorting by _score if Spring Data sort is used.
Original pull request: #209.
2018-06-18 11:18:31 +02:00
Oliver Gierke
5ddb46c435 DATAES-462 - Polishing.
SimpleElasticsearchPersistentProperty now already checks for the correct type of score properties. Added unit tests for that. Also added unit tests for SimpleElasticsearchPersistentEntity rejecting more than one score property being present.

Additional non-null assertions on components that are required so that we can remove superfluous null checks.

A bit o formatting, Javadoc, missing @since tags and license headers.

Original pull request: #207.
2018-06-13 19:00:36 +02:00
xhaggi
d996406113 DATAES-462 - Add support for mapping max score and document scores.
Original pull request: #207.
2018-06-13 18:58:13 +02:00
Oliver Gierke
62a03a8fb7 DATAES-464 - DefaultEntityWriter now considers read-only and transient properties.
We now register a custom Jackson module that filters read-only and transient properties for serialization.
2018-06-13 18:21:37 +02:00
Ted Liang
e8e407f93b DATAES-312 - Fix NullHandling.NULLS_LAST in query.sort
Original pull request: #163
2018-05-17 09:31:59 +02:00
Nordine Bittich
1b0006f9f7 DATAES-420 - Analyzer of main field ignored when using @MultiField annotation 2018-05-15 17:16:29 +02:00
xhaggi
ace5a21b05 DATAES-285 - Polishing
* drop superfluous class FieldIndex
* change FieldType text and keyword starting with capital letters

Original commit: 089d7746be
2018-05-07 13:19:37 +02:00
xhaggi
9c235cd53c DATAES-412 - only the last highlight field is added to SearchRequest 2018-05-07 11:39:58 +02:00
Chris White
ef1dca31e4 DATAES-198 - Fixed @Version annotation on fields. 2018-04-23 17:33:54 +02:00
Alen Turkovic
de1afe8bb0 DATAES-422 - Add support for IndicesOptions in search queries.
See also: DATAES-191..
2018-04-20 14:32:01 +02:00
Oliver Gierke
92c3bbebed DATAES-363 - Polishing.
Original pull request: #183.
2018-04-18 12:36:27 +02:00
Michael Wirth
512e9eacad DATAES-363 - Fixed CrudRepository.existsById(…) implementation.
Properly use Optional.isPresent() over a null check.

Original pull request: #183.
2018-04-18 12:36:10 +02:00
Remco Zigterman
4856974c1a DATAES-402 - fixing paging information 2018-03-15 09:57:19 +00:00
rivergod
e7b93bee90 DATAES-421 - Update ES to 6.1.0 2018-03-15 09:14:43 +00:00
Mark Paluch
9bfc6f23b9 DATAES-424 - Fix line endings to LF. 2018-01-24 13:06:40 +01:00
Oliver Gierke
51d0f95f65 DATAES-410 - Adapt API changes in Property in test cases. 2017-10-27 11:24:34 +02:00
Mark Paluch
a30a13dced DATAES-395 - Downgrade to CDI 1.0. 2017-09-21 14:39:22 +02:00
Mark Paluch
960263837b DATAES-395 - Polishing.
Fix line endings.
2017-09-18 15:36:39 +02:00
Mark Paluch
6dd4d28067 DATAES-395 - Upgrade to OpenWebBeans 2.0.1. 2017-09-18 15:36:20 +02:00
Artur Konczak
8dfee0a437 DATAES-373 - bump elasticsearch version to 5.5.0 2017-07-21 15:34:39 +01:00
Mohsin Husen
a085c064d5 DATAES-274 - prevent NPE in FacetedPageImpl 2017-07-21 10:40:11 +01:00
Mohsin Husen
a343bf7109 DATAES-353 - Polishing 2017-07-21 10:39:03 +01:00
Mark Paluch
b5bab6b85e DATAES-369 - Adapt to API changes in mapping subsystem. 2017-07-04 14:36:13 +02:00
Mohsin Husen
f1eb8a5eca DATAES-285 - bump elasticsearch version to 5.4.0 2017-05-31 19:49:26 +01:00
Artur Konczak
089d7746be DATAES-285 - upgrade to elasticsearch 5.x 2017-05-31 19:49:11 +01:00
Christoph Strobl
416a3f2baf DATAES-352 - Adapt to API changes in repository interfaces.
We now follow a more consistent naming scheme for the methods in repository that are driven by the following guidelines:

* Methods referring to an identifier now all end on …ById(…).
* Methods taking or returning a collection are named …All(…)

Please see DATACMNS-944 for details.
2017-05-05 00:03:25 +02:00
Mark Paluch
312df33c31 DATAES-350 - Adapt to SimpleTypeHolder changes in Spring Data Commons.
Replace constructor usage with singleton instance.

Related Ticket: DATAES-350.
2017-04-24 10:33:45 +02:00
Oliver Gierke
ff18271917 DATAES-328 - Adapt to API cchanges after Mockito 2.7 upgrade. 2017-03-24 09:44:49 +01:00
Mark Paluch
519a2a11a4 DATAES-328 - Adapt to API changes in Spring Data Commons. 2017-03-24 09:44:49 +01:00
Mark Paluch
4c7dd4939a DATAES-328 - Replace explicit generics with diamond operator. 2017-03-24 09:44:49 +01:00
Mark Paluch
0cada7f374 DATAES-328 - Integrate Data Commons Java 8 upgrade branch. 2017-03-24 09:44:49 +01:00
Artur Konczak
db3174dbbe DATAES-289 - added groovy plugin for ES2.4 2016-09-01 12:42:01 +01:00
Oliver Gierke
896fbbebc8 DATAES-289 - Upgraded to Elasticsearch 2.4.
Upgraded to Elasticsearch 2.4 as version before that are not compatiblewith Jackson 2.8 [0].

Removed the now unsupported Groovy plugin registration way and added groovy-lang as test scope dependency but had to disable the only Groovy related test as it seems to be unclear how to activate the Groovy plugin in an embedded Elasticsearch server [1].

[0] https://github.com/elastic/elasticsearch/issues/20089
[1] https://discuss.elastic.co/t/after-upgrade-from-es-2-1-1-to-es-2-2-0-groovy-scripting-is-broken/40977
2016-09-01 13:26:03 +02:00
Artur Konczak
7a95cb64a8 DATAES-260 added missing test 2016-08-22 00:31:40 +01:00
Artur Konczak
53b587101d DATAES-163 - Modified tests to work with new version of spring-data-elasticsearch base on ES2.x 2016-08-20 23:50:16 +01:00