[[release_notes_8_17]]
=== 8.17 Release notes

[discrete]
[[release_notes_8_17_2]]
=== 8.17.2 Release notes

[discrete]
==== API

New APIs:

* `esql.async_query_delete`
* `indices.get_data_lifecycle_stats`
* `inference.update`
* `security.delegate_pki`

Updated APIs:

* `async_search.submit` - Adds `keep_alive` Time parameter.
* `indices.put_template` - Adds `cause` String parameter.
* `xpack.info` - Adds `human` parameter for human-readable information.
* Timeout parameters updated:
** `:master_timeout` (Time), explicit operation timeout for connection to master node.
** `:timeout` (Time), explicit operation timeout.
*** Added to:
**** `index_lifecycle_management.delete_lifecycle` - adds both.
**** `index_lifecycle_management.delete_lifecycle` - adds `master_timeout`.
**** `index_lifecycle_management.get_lifecycle` - adds both.
**** `index_lifecycle_management.put_lifecycle` - adds both.
**** `index_lifecycle_management.start` - adds both.
**** `index_lifecycle_management.stop` - adds both.
**** `ingest.delete_geoip_database` - adds both.
**** `ingest.delete_geoip_location_database` - adds both.
**** `ingest.put_geoip_database` - adds both.
**** `ingest.put_ip_location_database` - adds both.
**** `license.post_start_trial` - removes `timeout`.
**** `shutdown.delete_node` - adds both.
**** `shutdown.put_node` - adds both.
**** `snapshot_lifecycle_management.delete_lifecycle` - adds both.
**** `snapshot_lifecycle_management.execute_lifecycle` - adds both.
**** `snapshot_lifecycle_management.execute_retention` - adds both.
**** `snapshot_lifecycle_management.get_lifecycle` - adds both.
**** `snapshot_lifecycle_management.get_stats` - adds both.
**** `snapshot_lifecycle_management.get_status` - adds both.
**** `snapshot_lifecycle_management.put_lifecycle` - adds both.

APIs promoted from Experimental to Stable:

* `inference.delete`
* `inference.get`
* `inference.inference`
* `inference.put`
* `inference.stream_inference`

[discrete]
[[release_notes_8_17_1]]
=== 8.17.1 Release notes

[discrete]
==== Client

* Fixes ScrollHelper issue https://github.com/elastic/elasticsearch-ruby/issues/2556[#2556] - There was a bug where an additional search (with scroll) request was made to Elasticsearch for each resulting hit. It was rewritten so that the docs are retrieved as needed and the Helper instance doesn't store documents internally, with big savings in memory and requests to Elasticsearch.

[discrete]
[[release_notes_8_17_0]]
=== 8.17.0 Release notes

[discrete]
==== Client
* Tested versions of Ruby for 8.17.0: Ruby (MRI) 3.1, 3.2 and 3.3. JRuby 9.3 and JRuby 9.4.

[discrete]
==== API

[discrete]
===== API changes
* `async_search.submit` - Removes `keep_alive` parameter. Adds:
** `ccs_minimize_roundtrips` (Boolean): When doing a cross-cluster search, setting it to true may improve overall search latency, particularly when searching clusters with a large number of shards. However, when set to true, the progress of searches on the remote clusters will not be received until the search finishes on all clusters.
** `rest_total_hits_as_int` (Boolean): Indicates whether hits.total should be rendered as an integer or an object in the rest search response.
* `open_point_in_time` - Adds `allow_partial_search_results` (Boolean) parameter: Specify whether to tolerate shards missing when creating the point-in-time, or otherwise throw an exception (default: false).
