Release highlights
editRelease highlights
editThese are the important new features and changes in minor releases. Every release also updates the Java API Client to the latest API specification. This includes new APIs and bug fixes in the specification of existing APIs.
For a list of detailed changes, including bug fixes, please see the GitHub project realease notes.
Version 8.16
edit-
ElasticsearchClient
is nowCloseable
. Closing a client object also closes the underlying transport - #851 -
Added option to make the response body available in case of deserialization error- #886.
-
While it has always been possible to set the log level to
trace
and have the client print both the json bodies of the requests and responses, it’s often not the best solution because of the large amount of information printed. -
To enable the feature:
RestClientOptions options = new RestClientOptions(RequestOptions.DEFAULT, true); ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper(), options); ElasticsearchClient esClientWithOptions = new ElasticsearchClient(transport);
-
To retrieve the original body from the TransportException that gets thrown in case of deserialization errors:
try{ // some code that returns faulty json } catch (TransportException ex){ try (RepeatableBodyResponse repeatableResponse = (RepeatableBodyResponse) ex.response()) { BinaryData body = repeatableResponse.body(); } }
-
While it has always been possible to set the log level to
Version 8.15
edit- New Connector API available
- Fixed bug in BulkIngester - #830
- Various bug fixes, among which are #844, #847
-
Changed builders for queries that use generic types, for example:
-
Old RangeQuery:
RangeQuery ra = RangeQuery.of(r -> r // no distinction between various types (date, term, number) .field("day") .gte(JsonData.of("2024-06-20")) // must use custom json for fields because there's no defined type .lte(JsonData.of("2024-07-05")) .boost(1.0F) .format("yyyy-MM-dd") .relation(RangeRelation.Contains));
-
New RangeQuery:
RangeQuery ra = RangeQuery.of(r -> r .date(d -> d // choose query type before .field("day") .gte("20-06-24") // field now only accepts valid type for the specified query .lte("20-07-24") .boost(1.0F) .format("yyyy-MM-dd") .relation(RangeRelation.Contains)));
-
Version 8.14
edit- No new feature.
Version 8.13
editVersion 8.12
edit- No new feature.
Version 8.11
edit- No new feature.
Version 8.10
editVersion 8.9
edit- Refactor RestClientTransport to allow using other http client libraries - #584
Version 8.8
edit- Throw a TransportException when an error response cannot be parsed - #579
- Speed up URL path encoding and remove dependency on httpclient - #576
- Add buffered lookahead and JsonData implementation for Jackson - #489, #567
- Expose additional BulkIngester metrics - #513
- Allow unparsed binary data to be used for ingestion - #508
Version 8.7
editVersion 8.6
editVersion 8.5
edit- Add support for API endpoints that return binary content, such as the Vector tile API - #434
- Add support for plugin-defined custom components - #370, #371
- Add SSL setup helper class and documentation - #390
Version 8.4
edit-
Add troubleshooting documentation on
MissingRequiredPropertyException
- #301 - Allow serializing aggregations without typed keys. This is useful in scenarios where the Java application is used as a proxy and the responses are sent back to its client - #316
Version 8.3
edit-
Add
toString()
implementation to all value classes - #269
Version 8.2
edit-
Add the
withJson()
method to all builder classes - #200 - Add troubleshooting docs for jakarta-json and build systems like Spring - #215
- Improve JSON mapping errors by adding location and property path in the exception message - #237
Version 8.1
edit- Add documentation for HLRC’s compatibility mode with Elasticsearch 8.x - #230