Release highlights

edit

These 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.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)));
  • Simplified builder for Script, removing the subclasses Stored and Inline. Example with UpdateRequest:

    • Old InlineScript:

      UpdateRequest updateRequest = UpdateRequest.of(u -> u
          .script(s -> s
              .inline(i -> i
                  .lang(ScriptLanguage.Painless)
                  .source("my-script")
                  .params(params)
              )
          )
      );
    • New Script

      UpdateRequest updateRequest = UpdateRequest.of(u -> u
          .script(s -> s
              .lang(ScriptLanguage.Painless)
              .source("my-script")
              .params(params)
          )
      );
    • Old StoredScript:

      UpdateRequest updateRequest = UpdateRequest.of(u -> u
          .script(s -> s
              .stored(st -> st
                  .id("script-id")
              )
          )
      );
    • New Script

      UpdateRequest updateRequest = UpdateRequest.of(u -> u
          .script(s -> s
              .id("script-id")
          )
      );

Version 8.14

edit
  • No new feature.

Version 8.13

edit
  • Add ES|QL helpers - #763
  • Add an example SpringBoot application - #737

Version 8.12

edit
  • No new feature.

Version 8.11

edit
  • No new feature.

Version 8.10

edit
  • Add instrumentation API and native OpenTelemetry implementation - #588, docs

Version 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

edit
  • Add BulkIngester helper - #474, #513, docs
  • Allow unparsed binary data to be used for ingestion - #508, docs
  • Add convenience method BooleanQuery.hasClauses() - #525

Version 8.6

edit
  • Allow using java.lang.reflect.Type in addition to java.lang.Class to define application types for deserialization - #438
  • Add buffered lookahead for Jackson to speed up union deserialization - #489
  • Cache the result of JsonProvider.provider() - #485

Version 8.5

edit

Version 8.4

edit

Version 8.3

edit
  • Add toString() implementation to all value classes - #269

Version 8.2

edit

Version 8.1

edit

Version 8.0

edit
  • Change the JSON-P implementation from Glassfish to Parsson - #63
  • Accept null values in lists - #68