Skip to content

Releases: elastic/elasticsearch-ruby

8.1.2

04 Apr 08:10
Compare
Choose a tag to compare

API

  • 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.1.0

09 Mar 13:49
Compare
Choose a tag to compare
  • 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. Adds body 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 - Remove allow_no_jobs parameter.
  • ml.get_datafeed_stats, ml.get_datafeeds - Remove allow_no_datafeeds parameter.
  • nodes.hot_threads - type parameter adds mem 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 option shards changes to shard_stats.
  • open_point_in_time - keep_alive is now a required parameter.
  • search_mvt - grid_type parameter adds centroid option in addition to grid and point.

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

28 Feb 15:50
Compare
Choose a tag to compare
  • Improves handling of YAML parsing, uses safe_load instead of load 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

10 Feb 17:23
Compare
Choose a tag to compare

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"

Please let us know if you find any issues.

7.17.0

01 Feb 16:40
Compare
Choose a tag to compare
  • 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

13 Jan 18:07
Compare
Choose a tag to compare

API

Bugfix for #1475, an issue where if you indexed a document with an id such as an id, it would get escaped to an+id instead of an%20id when using index or create. This would result in the document id being an+id instead of the intended value an id.

v7.16.1

14 Dec 11:27
Compare
Choose a tag to compare

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

08 Dec 08:34
Compare
Choose a tag to compare

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 to true, 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 using GET, but it supports both GET and POST on the Elasticsearch side. So it was updated to only use POST when there's a body present, or else use GET. Elasticsearch would still accept a body with GET, but to be more semantically correct in the clients we use POST when there's a body.
  • delete_index_template was updated to support the ignore_404 parameter to ignore 404 errors when attempting to delete a non-existing template.
  • ingest.put_pipeline adds new parameter if_version: Required version for optimistic concurrency control for pipeline updates.
  • ml.put_trained_model: adds new parameter defer_definition_decompression: If set to true and a compressed_definition is provided, the request defers definition decompression and skips relevant validations.
  • nodes.hot_threads adds new parameter sort: 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 parameter track_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 parameter transform_id. Body is now optional and the API will use GET or POST 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

04 Nov 14:57
Compare
Choose a tag to compare
8.0.0.pre1 Pre-release
Pre-release

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

22 Sep 16:58
Compare
Choose a tag to compare

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 for open_point_in_time.
  • The index_metric parameter in nodes.stats adds the shards option.

X-Pack

  • New parameters for ml.put_job: ignore_unavailable, allow_no_indices, ignore_throttled, expand_wildcards.
  • New endpoint: security.query_api_keys.