8.0 Release notes
edit8.0 Release notes
edit8.0.1 Release notes
edit-
Fixes an issue with the generated API code. When updating the code generator for 8.x, the order of
arguments.clone
in the generated code was changed. This would make it so that we would modify the parameters passed in before cloning them, which is undesired. Issue: #1727.
8.0.0 Release notes
editFirst release for the 8.x branch with a few major changes.
- Tested versions of Ruby for 8.0.0: Ruby (MRI) 2.6, 2.7, 3.0 and 3.1, JRuby 9.3.
Client
editThe code for the dependency elasticsearch-transport
has been promoted to its own repository and the project and gem have been renamed to elastic-transport
. This gem now powers elasticsearch
and elastic-enterprise-search
. The elasticsearch-transport
gem won’t be maintained after the last release in the 7.x
branch, in favour of elastic-transport
.
This will allow us to better address maintainance in both clients and the library itself.
API
editThe elasticsearch-api
library has been generated based on the Elasticsearch 8.0.0 REST specification.
X-Pack Deprecation
editX-Pack has been deprecated. The elasticsearch-xpack
gem will no longer be maintained after the last release in the 7.x
branch. The "X-Pack" integration library codebase was merged into elasticsearch-api
. All the functionality is available from elasticsearch-api
. The xpack
namespace was removed for accessing any APIs other than _xpack
(client.xpack.info
) and _xpack/usage
(client.xpack.usage
). But APIs which were previously available through the xpack
namespace e.g.: client.xpack.machine_learning
are now only available directly: client.machine_learning
.
Parameter checking was removed
editThe code in elasticsearch-api
will no longer validate all the parameters sent. It will only validate the required parameters such as those needed to build the path for the request. But other API parameters are going to be validated by Elasticsearch. This provides better forwards and backwards compatibility in the client.
Response object
editIn previous versions of the client, calling an API endpoint would return the JSON body of the response. With 8.0
, we are returning a new Response object Elasticsearch::API::Response
. It still behaves like a Hash to maintain backwards compatibility, but adds the status
and headers
methods from the Elastic::Transport:Transport::Response
object:
elastic_ruby(main)> response = client.info => #<Elasticsearch::API::Response:0x000055752b0c50a8 @response= #<Elastic::Transport::Transport::Response:0x000055752b0c50f8 @body= {"name"=>"instance", "cluster_name"=>"elasticsearch-8-0-0-SNAPSHOT-rest-test", "cluster_uuid"=>"oIfRARuYRGuVYybjxQJ87w", "version"=> {"number"=>"8.0.0-SNAPSHOT", "build_flavor"=>"default", "build_type"=>"docker", "build_hash"=>"7e23c54eb31cc101d1a4811b9ab9c4fd33ed6a8d", "build_date"=>"2021-11-04T00:21:32.464485627Z", "build_snapshot"=>true, "lucene_version"=>"9.0.0", "minimum_wire_compatibility_version"=>"7.16.0", "minimum_index_compatibility_version"=>"7.0.0"}, "tagline"=>"You Know, for Search"}, @headers={"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"}, @status=200>> elastic_ruby(main)> response.status => 200 elastic_ruby(main)> response.headers => {"X-elastic-product"=>"Elasticsearch", "content-type"=>"application/json", "content-length"=>"567"} elastic_ruby(main)> response['name'] => "instance" elastic_ruby(main)> response['tagline'] => "You Know, for Search"