Releases: elastic/elasticsearch-ruby
8.1.0
- Tested versions of Ruby for 8.1.0: Ruby (MRI) 2.6, 2.7, 3.0 and 3.1, JRuby 9.3.
API
Updated for compatibility with Elasticsearch 8.1's API.
New parameters:
indices.forcemerge
-wait_for_completion
Should the request wait until the force merge is completed.indices.get
-features
Return only information on specified index features (options: aliases, mappings, settings).ingest.put_pipeline
if_version
(Integer), required version for optimistic concurrency control for pipeline updates.ml.delete_trained_model
-timeout
controls the amount of time to wait for the model to be deleted.force
(Boolean) true if the model should be forcefully deleted.ml.stop_trained_model_deployment
-allow_no_match
whether to ignore if a wildcard expression matches no deployments. (This includes_all
string or when no deployments have been specified).force
true if the deployment should be forcefully stopped. Addsbody
parameter, the stop deployment parameters.nodes.hot_threads
-sort
the sort order for 'cpu' type (default: total) (options: cpu, total)
Updated parameters:
indices.get_index_template
-name
is now a String, a pattern that returned template names must match.knn_search
-index
removes option to use empty string to perform the operation on all indices.ml.close_job
,ml.get_job_stats
,ml.get_jobs
,ml.get_overall_buckets
- Removeallow_no_jobs
parameter.ml.get_datafeed_stats
,ml.get_datafeeds
- Removeallow_no_datafeeds
parameter.nodes.hot_threads
-type
parameter addsmem
option.nodes.info
-metric
updated to use_all
to retrieve all metrics and_none
to retrieve the node identity without any additional metrics. (options: settings, os, process, jvm, thread_pool, transport, http, plugins, ingest, indices, aggregations, _all, _none).index_metric
optionshards
changes toshard_stats
.open_point_in_time
-keep_alive
is now a required parameter.search_mvt
-grid_type
parameter addscentroid
option in addition togrid
andpoint
.
New APIs
- OpenID Connect Authentication:
security.oidc_authenticate
,security.oidc_logout
,security.oidc_prepare_authentication
. transform.reset_transform
.- New experimental APIs, designed for internal use by the fleet server project:
fleet.search
,fleet.msearch
.
7.17.1
- Improves handling of YAML parsing, uses
safe_load
instead ofload
when doing the product verification (should only affect Ruby < 3.0). - Updates headers setup when using the Manticore adapter. This fixes an issue where the user-agent header was being foverridden even when it was being set on initialization via the transport options. Pull Request, issue.
8.0.0
8.0.0
First 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
Elastic Transport
The 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
The elasticsearch-api
library has been generated based on the Elasticsearch 8.0.0 REST specification.
X-Pack Deprecation
X-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
The 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
In 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"
7.17.0
- Drops Ruby 2.5 from the test matrix. Support for Ruby 2.5 was dropped March 2021.
- Updates the product verification when the response is a
413
error.
7.16.3
v7.16.1
Patch release corresponding with Elastic Stack version 7.16.1 that addresses the Apache Log4j2 vulnerability, more information.
Client
The only changes in the client since 7.16.0 are a few minor updates for the Compatibility mode with 8.0. We added the compatibility header in 7.13.0
, but now we have integration tests and compatibility tests for version 7.x
of the client with Elasticsearch 8.0
.
7.16.0
7.16.0
Client
- Adds the
delay_on_retry
parameter, a value in milliseconds to wait between each failed connection, thanks DinoPullerUqido! Pull Request and backport. - Adds CA fingerprinting. You can configure the client to only trust certificates that are signed by a specific CA certificate (CA certificate pinning) by providing a
ca_fingerprint
option. This will verify that the fingerprint of the CA certificate that has signed the certificate of the server matches the supplied value:
ca_fingerprint = '64F2593F...'
client = Elasticsearch::Client.new(
host: 'https://elastic:changeme@localhost:9200',
transport_options: { ssl: { verify: false } },
ca_fingerprint: ca_fingerprint
)
The verification will be run once per connection.
- Fixes compression. When
compression
is set totrue
, the client will now gzip the request body properly and use the appropiate headers. Thanks johnnyshields! Pull Request and backport.
API
Updates
- Cleaned up some deprecated code.
count
- The API is documented as usingGET
, but it supports both GET and POST on the Elasticsearch side. So it was updated to only usePOST
when there's a body present, or else useGET
. Elasticsearch would still accept a body withGET
, but to be more semantically correct in the clients we usePOST
when there's a body.delete_index_template
was updated to support theignore_404
parameter to ignore 404 errors when attempting to delete a non-existing template.ingest.put_pipeline
adds new parameterif_version
: Required version for optimistic concurrency control for pipeline updates.ml.put_trained_model
: adds new parameterdefer_definition_decompression
: If set totrue
and acompressed_definition
is provided, the request defers definition decompression and skips relevant validations.nodes.hot_threads
adds new parametersort
: The sort order for 'cpu' type (default: total) (options: cpu, total).open_point_in_time
:keep_alive
is now a required parameter.search_mvt
: adds new parametertrack_total_hits
: Indicate if the number of documents that match the query should be tracked. A number can also be specified, to accurately track the total hit count up to the number.transform.preview_transform
: adds new parametertransform_id
. Body is now optional and the API will useGET
orPOST
depending on the presence of a body.
APIs promoted from experimental to stable since last version:
fleet.global_checkpoints
get_script_context
get_script_language
indices.resolve_index
monitoring.bulk
rank_eval
searchable_snapshots.mount
searchable_snapshots.stats
security.clear_cached_service_tokens
security.create_service_token
security.delete_service_token
security.get_service_accounts
security.get_service_credentials
shutdown.delete_node
shutdown.get_node
shutdown.put_node
terms_enum
New APIs
fleet.mseach
fleet.search
indices.modify_data_stream
ml.infer_trained_model_deployment
ml.start_trained_model_deployment
ml.stop_trained_model_deployment
migration.get_feature_upgrade_status
migration.post_feature_upgrade_status
security.enroll_kibana
security.enroll_node
transform.updgrade_transforms
8.0.0.pre1
First pre-release of elasticsearch 8.x
🥳
Client
Elastic Transport
The 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
.
API
X-Pack Deprecation
X-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
The 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
In 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"
7.15.0
7.15.0
Client
- Compatibility with Elasticsearch v7.15.0 APIs.
- We've tested and added documentation on best practices for leveraging the client in a Function-as-a-Service (FaaS) environment to the official docs.
API
- New experimental endpoints:
indices.disk_usage
.indices.field_usage_stats
,nodes.clear_repositories_metering_archive
,get_repositories_metering_info
,search_mvt
- The
index
parameter is now required foropen_point_in_time
. - The
index_metric
parameter innodes.stats
adds theshards
option.
X-Pack
- New parameters for
ml.put_job
:ignore_unavailable
,allow_no_indices
,ignore_throttled
,expand_wildcards
. - New endpoint:
security.query_api_keys
.