[[release-notes]]
== Release notes

* <<rn-8-17-2>>
* <<rn-8-17-1>>
* <<rn-8-17-0>>
* <<rn-8-16-0>>
* <<rn-8-15-1>>
* <<rn-8-15-0>>
* <<rn-8-14-0>>
* <<rn-8-13-2>>
* <<rn-8-13-1>>
* <<rn-8-13-0>>
* <<rn-8-12-1>>
* <<rn-8-12-0>>
* <<rn-8-11-1>>
* <<rn-8-11-0>>
* <<rn-8-10-1>>
* <<rn-8-10-0>>
* <<rn-8-9-0>>
* <<rn-8-8-1>>
* <<rn-8-8-0>>
* <<rn-8-7-0>>
* <<rn-8-6-2>>
* <<rn-8-6-1>>
* <<rn-8-6-0>>
* <<rn-8-5-3>>
* <<rn-8-5-2>>
* <<rn-8-5-1>>
* <<rn-8-5-0>>
* <<rn-8-4-3>>
* <<rn-8-4-2>>
* <<rn-8-4-1>>
* <<rn-8-4-0>>
* <<rn-8-3-3>>
* <<rn-8-3-2>>
* <<rn-8-3-1>>
* <<rn-8-3-0>>
* <<rn-8-2-3>>
* <<rn-8-2-2>>
* <<rn-8-2-1>>
* <<rn-8-2-0>>
* <<rn-8-1-2>>
* <<rn-8-1-1>>
* <<rn-8-1-0>>
* <<rn-8-0-0>>

[discrete]
[[rn-8-17-2]]
=== 8.17.2 (2025-03-04)

- Explain how to use sub clients in API docs (https://github.com/elastic/elasticsearch-py/pull/2798[#2798])
- Render descriptions as Markdown in API docs
- Update APIs
  * Add `keep_alive` to Submit async search API
  * Add `Run and Delete` an async ES|QL query APIs
  * Add Get async ES|QL query results API
  * Add `include_ccs_metadata` to ES|QL query API

[discrete]
[[rn-8-17-1]]
=== 8.17.1 (2025-01-23)

- Make pyarrow dependency optional for tests (https://github.com/elastic/elasticsearch-py/pull/2733[#2733], contributed by danigm)
- Update APIs:
  * Add Simulate ingest API
  * Add Get data stream lifecycle stats API
  * Add Update inference API
  * Add Create or update, Get and Delete IP geolocation database configuration APIs
  * Add Bulk update API keys
  * Add Get and Update Security index settings APIs
  * Add OpenID Connect prepare authentication, OpenID Connect authenticate and OpenID Connect logout APIs
  * Add Delegate PKI authentication API
  * Add Repository analysis API
  * Add Render Search Application Query API
  * Add Find field structure and Find messages structure APIs
  * Add Get Watcher index settings and Update Watcher index settings APIs
  * Add experimental Check in and Claim connector sync job APIs
  * Add experimental Set connector sync job errors and Set connector sync job stats APIs
  * Add experimental Update connector features APIs
  * Add experimental Post Event to an Analytics Collection API
  * Add `timeout` and `master_timeout` to Snapshot lifecycle management (SLM) APIs
  * Add `allow_partial_search_results` to SQL search API
  * Add `throttle_period_in_millis` to Create or update watch API
  * Fix query parameters for CAT APIs

[discrete]
[[rn-8-17-0]]
=== 8.17.0 (2024-12-13)

- Allow simsimd again on Python 3.13 (https://github.com/elastic/elasticsearch-py/pull/2722[#2722])
- Update APIs:
  * Mark all Inference APIs as stable.
  * Add `allow_partial_search_results` to the Open Point in Time API
  * Add `keep_alive` to the Get async search status API
  * Remove the `keep_alive`, `pre_filter_shard_size` and `scroll` parameters from the Submit async search API. They were never supported.
  * Add `master_timeout` and `timeout` to all autoscaling policy APIs
  * Add `master_timeout` to the Alias exists and Get alias APIs
  * Add `list_executed_pipelines` and `require_data_stream` to Bulk API
  * Add `include_model_definition` to Get trained models API
  * Add `meta` to Create data frame analytics API
  * Add `aggs` to Create datafeeds API
  * Add `allow_no_indices`, `expand_wildcards`, `ignore_throttled` and `ignore_unavailable` to Create anomaly detection jobs API

[discrete]
[[rn-8-16-0]]
=== 8.16.0 (2024-11-12)

- Support Python 3.13 (https://github.com/elastic/elasticsearch-py/pull/2689[#2689])
- Emit Python warnings for beta and tech preview APIs (https://github.com/elastic/elasticsearch-py/pull/2685[#2685])
- Vectorstore: use a retriever query for hybrid search (https://github.com/elastic/elasticsearch-py/pull/2682[#2682])
- Allow retries for statuses other than 429 in streaming bulk (https://github.com/elastic/elasticsearch-py/pull/2702[#2702])
- Make `BulkIndexError` and `ScanError` serializable (https://github.com/elastic/elasticsearch-py/pull/2700[#2700])
- Fix import when `trace` is missing from `opentelemetry` package (https://github.com/elastic/elasticsearch-py/pull/2705[#2705])
- Update APIs:
  * Fix `nodes` parameter in Task management API
  * Add Test query rule API
  * Add Create Cross-Cluster API key and Update Cross-Cluster API key APIs
  * Add Verify snapshot repository API
  * Add `data_stream_name` and `settings` to Delete auto-follow pattern API
  * Add `max_samples_per_key` to Get async EQL status API
  * Add `lifecycle` and remove unused `data_retention` and `downsampling parameters` from Put data stream lifecycle API
  * Add `include_remotes` and remove `flat_settings` from Cluster stats API
  * Add `remote_indices` to Create or update application privileges and Create or update roles APIs

Note that the new Python warnings can be disabled as follows:

[source,python]
----
import warnings
from elasticsearch.exceptions import GeneralAvailabilityWarning

warnings.filterwarnings("ignore", category=GeneralAvailabilityWarning)
----

[discrete]
[[rn-8-15-1]]
=== 8.15.1 (2024-09-08)

- Fix OTel context loss in parallel bulk helper (https://github.com/elastic/elasticsearch-py/pull/2616[#2616])
- Use request converter to generate python examples (https://github.com/elastic/elasticsearch-py/pull/2645[#2645])
- Add Geoip database configuration APIs: Create or update, Get and Delete
- Add `q` parameter to Update by Query API
- Add `allow_no_indices` and `ignore_unavailable` parameters to Resolve index API

[discrete]
[[rn-8-15-0]]
=== 8.15.0 (2024-08-09)

- Added the Connector API (https://github.com/elastic/elasticsearch-py/pull/2623[#2623])
- Added support for https://www.elastic.co/guide/en/elasticsearch/reference/master/semantic-text.html[semantic_text] and https://www.elastic.co/guide/en/elasticsearch/reference/master/query-dsl-semantic-query.html[semantic query].
- Added support for sequences of job id, model id and tags where applicable in ML APIs
- Added `dry_run` and `force` parameters to the Perform inference API
- Added optional Arrow deserialization support (https://github.com/elastic/elasticsearch-py/pull/2632[#2632])
- Merged Query Ruleset API into new Query Rules API (https://github.com/elastic/elasticsearch-py/pull/2607[#2607])
- Added mapping code examples (https://github.com/elastic/elasticsearch-py/pull/2596[#2596])
- Fixed reference docs (https://github.com/elastic/elasticsearch-py/pull/2629[#2629])
- Dropped Python 3.7 support (https://github.com/elastic/elasticsearch-py/pull/2618[#2618])

[discrete]
[[rn-8-14-0]]
=== 8.14.0 (2024-06-06)

- Fixed `node_pool_class` override (#2581, contributed by Tallak Hellebust)
- Added `retriever` to the Search API
- Added `deprecated` and removed `allow_auto_create` from the Create or update component template API
- Added `allow_auto_create`, `cause`, `deprecated`, `ignore_missing_component_templates` and `master_timeout` to the Create or update index template API
- Added `cause`, removed `flat_settings` and `timeout` from the Create or update index template legacy API
- Removed various unsupported parameters from the Simulate index API
- Added various supported paramters to the Simulate index template API
- Added the `completion` and `rerank` task types to the Inference APIs
- Added the `query` and `timeout` parameters to the Perform inference API
- Added `typed_keys` to the Search Application Search API
- Added `with_profile_uid` to the Get API key information and Query API key information APIs


[discrete]
[[rn-8-13-2]]
=== 8.13.2 (2024-05-24)

- Added the `ml.update_trained_model_deployment` API
- Marked Requests 2.32.2 as incompatible with the Elasticsearch client

[discrete]
[[rn-8-13-1]]
=== 8.13.1 (2024-05-03)

- Added `force_synthetic_source` to the Get API
- Added `wait_for_completion` to the Create trained model API
- Added `typed_keys` to the Query API key information API

[discrete]
[[rn-8-13-0]]
=== 8.13.0 (2024-03-22)

- Added native OpenTelemetry support
- Added optional `orjson` (a fast, correct JSON library) serialization support
- Added the `text_structure.test_grok_pattern` API
- Added the `indices.resolve_cluster` API
- Renamed the `model_id` parameter to `inference_id` in the `inference` APIs
- Changed all `synonyms` APIs from **experimental** to **stable**.
- Fixed API key documentation

[discrete]
[[rn-8-12-1]]
=== 8.12.1 (2024-02-22)

- Fixed but deprecated parameter aliases in body parameter
- Added mappings and bulk to quickstart page

[discrete]
[[rn-8-12-0]]
=== 8.12.0 (2024-01-19)

- Dropped support for Python 3.6
- Allowed unrestricted `body` parameter again
- Added the Inference APIs
- Added the ES|QL API
- Added `active_only` parameter to `security.get_api_key` API
- Added `expiration` parameter to `security.update_api_key` API

[discrete]
[[rn-8-11-1]]
=== 8.11.1 (2023-12-08)

- Added missing `role_templates` to `security.put_role_mapping` API
- Added interactive examples page to documentation
- Changed API reference to have one page per sub-client

[discrete]
[[rn-8-11-0]]
=== 8.11.0 (2023-11-13)

- Support Python 3.12
- Added missing `scores` parameter to create trained model vocabulary API
- Added missing `delete_dest_index` parameter to delete transform API

[discrete]
[[rn-8-10-1]]
=== 8.10.1 (2023-10-13)

- Removed deprecation warnings when using `body` parameter
- Fixed some type hints to use covariant Sequence instead of invariant List

[discrete]
[[rn-8-10-0]]
=== 8.10.0 (2023-09-22)

- Added the Query rules APIs
- Added the Synonyms APIs

[discrete]
[[rn-8-9-0]]
=== 8.9.0 (2023-08-10)

- Added the `cluster.info` API
- Updated the `inference_config` argument in `ml.put_trained_model` API to reflect an improvement in the specification

[discrete]
[[rn-8-8-1]]
=== 8.8.1 (2023-07-06)

* Added the `rank` parameter to the `search` API

[discrete]
[[rn-8-8-0]]
=== 8.8.0 (2023-05-25)

* Added `include_defaults` parameter to the `cluster.get_component_template`, `indices.get_data_stream`, and `indices.get_index_template` API
* Added the `indices.delete_data_lifecycle`, `indices.explain_data_lifecycle`, `indices.get_data_lifecycle`, and `indices.put_data_lifecycle` APIs
* Added the **experimental** `search_application.delete`, `search_application.delete_behavioral_analytics`, `search_application.get`, `search_application.get_behavioral_analytics`, `search_application.list`, `search_application.put`, `search_application.put_behavioral_analytics`, and `search_application.search` APIs.

[discrete]
[[rn-8-7-0]]
=== 8.7.0 (2023-04-06)

* Added the `health_report` API
* Added the `transform.schedule_now_transform` API
* Added the `from_` request parameter to the `transform.start_transform` API
* Added the `buffer`, `grid_agg`, and `with_labels` parameters to the `search_mvt` API
* Added the `allow_auto_create` parameter to the `cluster.create_component_template` API
* Added the `delete_user_annotations` parameter to the `ml.delete_job`, `ml.reset_job` API
* Added the `start` and `end` parameters to the `ml.preview_datafeed` API
* Added the `priority` parameter to the `ml.start_datafeed` API
* Added the `job_id` parameter to the `ml.update_datafeed` API
* Added the `model_prune_window` parameter to the `ml.update_job` API
* Added the `feature_states` parameter to the `snapshot.restore_snapshot` API
* Added the `timeout` parameter to the `transform.get_transform_stats` API
* Added the `from_` parameter to the `transform.start_transform` API
* Changed the `input` parameter of the `ml.put_trained_models` API from required to optional
* Fixed the `cluster.create_component_template` API by removing the erroneously provided `aliases`, `mappings`, and `settings` parameters. Only the `template` parameter should be used for specifying component templates.

[discrete]
[[rn-8-6-2]]
=== 8.6.2 (2023-02-16)

* Client is compatible with Elasticsearch 8.6.2

[discrete]
[[rn-8-6-1]]
=== 8.6.1 (2023-01-27)

* Client is compatible with Elasticsearch 8.6.1

[discrete]
==== Core

* Added the `expand_wildcards`, `preference`, and `routing` parameters to the `open_point_in_time` API.

[discrete]
[[rn-8-6-0]]
=== 8.6.0 (2023-01-10)

* Client is compatible with Elasticsearch 8.6.0

[discrete]
==== Core

* Changed the `fields` parameter of the `field_caps` API to be encoded in the HTTP request body.
* Changed the `index` parameter of the `rank_eval` API to be optional.
* Changed the `requests` parameter of the `rank_eval` API to be optional.

[discrete]
==== CAT

* Added the `time` parameter to the `cat.indices` API

[discrete]
==== Machine Learning

* Fixed the `model_id` parameter of the `ml.clear_trained_model_deployment_cache` API to be required.

[discrete]
[[rn-8-5-3]]
=== 8.5.3 (2022-12-08)

* Client is compatible with Elasticsearch 8.5.3

[discrete]
[[rn-8-5-2]]
=== 8.5.2 (2022-11-23)

* Client is compatible with Elasticsearch 8.5.2

[discrete]
[[rn-8-5-1]]
=== 8.5.1 (2022-11-21)

* Client is compatible with Elasticsearch 8.5.1

[discrete]
[[rn-8-5-0]]
=== 8.5.0 (2022-11-2)

[discrete]
==== Indices

* Added the **experimental** `indices.downsample` API

[discrete]
==== Rollup

* Removed the deprecated `rollup.rollup` API.

[discrete]
==== Snapshot

* Added the `index_names` parameter to the `snapshot.get` API.

[discrete]
==== Machine Learning

* Added the **beta** `ml.clear_trained_model_deployment_cache` API.
* Changed the `ml.put_trained_model_definition_part` API from **experimental** to **stable**.
* Changed the `ml.put_trained_model_vocabulary` API from **experimental** to **stable**.
* Changed the `ml.start_trained_model_deployment` API from **experimental** to **stable**.
* Changed the `ml.stop_trained_model_deployment` API from **experimental** to **stable**.

[discrete]
==== Security

* Added the `with_limited_by` parameter to the `get_api_key` API.
* Added the `with_limited_by` parameter to the `query_api_keys` API.
* Added the `with_profile_uid` parameter to the `get_user` API.
* Changed the `security.activate_user_profile` API from **beta** to **stable**.
* Changed the `security.disable_user_profile` API from **beta** to **stable**.
* Changed the `security.enable_user_profile` API from **beta** to **stable**.
* Changed the `security.get_user_profile` API from **beta** to **stable**.
* Changed the `security.suggest_user_profiles` API from **beta** to **stable**.
* Changed the `security.update_user_profile_data` API from **beta** to **stable**.
* Changed the `security.has_privileges_user_profile` API from **experimental** to **stable**.

[discrete]
[[rn-8-4-3]]
=== 8.4.3 (2022-10-06)

* Client is compatible with Elasticsearch 8.4.3

[discrete]
[[rn-8-4-2]]
=== 8.4.2 (2022-09-20)

[discrete]
==== Documents

* Added the `error_trace`, `filter_path`, `human` and `pretty` parameters to the `get_source` API.
* Added the `ext` parameter to the `search` API.

[discrete]
==== Async Search

* Added the `ext` parameter to the `async_search.submit` API.

[discrete]
==== Fleet

* Added the `ext` parameter to the `fleet.search` API.

[discrete]
[[rn-8-4-1]]
=== 8.4.1 (2022-09-06)

* Client is compatible with Elasticsearch 8.4.1

[discrete]
[[rn-8-4-0]]
=== 8.4.0 (2022-08-25)

[discrete]
==== Search

* Added the `knn` parameter to the `search` API.
* Added the `knn` parameter to the `async_search.submit` API.

[discrete]
==== Machine Learning

* Added the `cache_size` parameter to the `ml.start_trained_model_deployment` API.

[discrete]
==== Security

* Added the `security.update_api_key` API.

[discrete]
[[rn-8-3-3]]
=== 8.3.3 (2022-08-01)

* Client is compatible with Elasticsearch 8.3.3

[discrete]
[[rn-8-3-2]]
=== 8.3.2 (2022-08-01)

[discrete]
==== Security

* Added the `refresh` parameter to the `security.create_service_token` API.

[discrete]
[[rn-8-3-1]]
=== 8.3.1 (2022-06-30)

[discrete]
==== Security

* Added the **experimental** `security.has_privileges_user_profile` API.
* Added the `hint` parameter to the **experimental** `security.suggest_user_profiles` API.

[discrete]
[[rn-8-3-0]]
=== 8.3.0 (2022-06-29)

* Client is compatible with Elasticsearch 8.3.0

[discrete]
[[rn-8-2-3]]
=== 8.2.3 (2022-06-15)

[discrete]
==== Documents

* Added the `routing` parameter to the `msearch` API.

[discrete]
==== CAT

* Added the `cat.component_templates` API.

[discrete]
==== Ingest

* Added the `if_version` parameter to the `ingest.put_pipeline` API.

[discrete]
==== Security

* Changed the `name` parameter for the `security.create_service_token` API from required to optional.
* Added the `refresh` parameter to the `security.create_service_token` API.
* Changed the name of `access` parameter to the `labels` parameter in the `security.update_user_profile_data` API.

[discrete]
==== Shutdown

* Added the `timeout` and `master_timeout` parameters to the `shutdown.get_node`, `shutdown.delete_node`, and `shutdown.put_node` APIs.
* Added the `reason`, `type`, `allocation_delay`, and `target_node_name` parameters to the `shutdown.put_node` API.

[discrete]
[[rn-8-2-2]]
=== 8.2.2 (2022-06-01)

* Client is compatible with Elasticsearch 8.2.2

[discrete]
[[rn-8-2-1]]
=== 8.2.1 (2022-06-01)

[discrete]
==== Machine Learning

* Added the `inference_config` parameter to the `ml.infer_trained_model_deployment` API

[discrete]
[[rn-8-2-0]]
=== 8.2.0 (2022-05-03)

[discrete]
==== Client

* Re-introduced support for passing `requests.auth.BaseAuth` objects to the `http_auth` parameter which was available in 7.x.

[discrete]
==== Search

* Added the `filter` parameter to the **experimental** `knn_search` API

[discrete]
==== Documents

* Changed the `source` and `dest` parameters for the `reindex` API from optional to required

[discrete]
==== Indices

* Added the `indices.field_usage_stats` API
* Added the `indices.modify_data_stream` API
* Added the `fields` and `types` parameters to the `field_caps` API
* Added the `ignore_unvailable` parameter to the `open_point_in_time` API
* Added the `master_timeout` and `timeout` parameters to the `indices.delete` API
* Added the `features` parameter to the `indices.get` API

[discrete]
==== Machine Learning

* Added the `ml.get_memory_stats` API

[discrete]
==== Migrations

* Added the `migrations.get_feature_upgrade_status` API
* Added the `migrations.post_feature_upgrade` API

[discrete]
==== Nodes

* Added the `nodes.clear_repositories_metering_archive` API
* Added the `nodes.get_repositories_metering_info` API

[discrete]
==== Security

* Added the **beta** `security.activate_user_profile` API
* Added the **beta** `security.disable_user_profile` API
* Added the **beta** `security.enable_user_profile` API
* Added the **beta** `security.get_user_profile` API
* Added the **beta** `security.suggest_user_profiles` API
* Added the **beta** `security.update_user_profile_data` API

[discrete]
==== SQL

* Added the `catalog`, `index_using_frozen`, `keep_alive`, `keep_on_completion`, `runtime_mappings`, and `wait_for_completion_timeout` parameters to the `sql.query` API

[discrete]
[[rn-8-1-2]]
=== 8.1.2 (2022-03-30)

* Client is compatible with Elasticsearch 8.1.2


[discrete]
[[rn-8-1-1]]
=== 8.1.1 (2022-03-22)

[discrete]
==== Documents

* Changed the `source` and `dest` parameters of the `reindex` API to be required.

[discrete]
==== Mappings

* Changed the `fields` parameter of the `field_caps` API to be required.


[discrete]
[[rn-8-1-0]]
=== 8.1.0 (2022-03-08)

[discrete]
==== Transforms

* Added the `transform.reset_transform` API


[discrete]
[[rn-8-0-0]]
=== 8.0.0 (2022-02-10)

[discrete]
==== Added

* Added the top-level `.options()` method to `Elasticsearch` and `AsyncElasticsearch` for modifying transport options.
* Added parameters corresponding to JSON request body fields for all APIs
* Added `basic_auth` parameter for specifying username and password authentication
* Added `bearer_auth` parameter for specifying an HTTP bearer token or service token
* Added the `meta` property to `ApiError` to access the HTTP response metadata of an error.
* Added a check that a compatible version of the `elastic-transport` package is installed.

[discrete]
==== Changed

* Changed the transport layer to use the `elastic-transport` package
* Changed user-defined `body` parameters to have semantic names (e.g `index(document={...})` instead of `index(body={...})`).
* Changed responses to be objects with two properties, `meta` for response metadata (HTTP status, headers, node, etc) and `body` for a typed body.
* Changed `AsyncElasticsearch` to always be available, regardless of whether `aiohttp` is installed
* Changed exception hierarchy, the major change is a new exception `ApiError` which differentiates between an error that's raised from the transport layer (previously `elasticsearch.exceptions.TransportError`, now `elastic_transport.TransportError`) and one raised from the API layer
* Changed the name of `JSONSerializer` to `JsonSerializer` for consistency with other serializer names. Added an alias to the old name for backwards compatibility
* Changed the default mimetypes (`application/json`) to instead use compatibility mimetypes (`application/vnd.elasticsearch+json`) which always request for responses compatibility with version 8.x.

[discrete]
==== Removed

* Removed support for Python 2.7 and Python 3.5, the library now supports only Python 3.6+
* Removed the `elasticsearch.connection` module as all functionality has been moved to the `elastic-transport` package
* Removed the default URL of `http://localhost:9200` due to Elasticsearch 8.0 default configuration being `https://localhost:9200`.
  The client's connection to Elasticsearch now must be specified with scheme, host, and port or with the `cloud_id` parameter
* Removed the ability to use positional arguments with API methods. Going forward all API parameters must be keyword-only parameters
* Removed the `doc_type`, `include_type_name`, and `copy_settings` parameters from many document and index APIs

[discrete]
==== Deprecated

* Deprecated the `body` and `params` parameters on all APIs
* Deprecated setting transport options `http_auth`, `api_key`, `ignore`, `request_timeout`, `headers`, and `opaque_id`
  All of these settings should instead be set via the `.options()` method
* Deprecated the `elasticsearch.transport` and `elasticsearch.client` modules. These modules will be removed in a future version

[discrete]
==== CAT

* Removed the deprecated `local` parameter from the `cat.indices`, `cat.nodes`, `cat.shards` API
* Removed the deprecated `allow_no_datafeeds` parameter from the `cat.ml_datafeeds` API
* Removed the deprecated `allow_no_jobs` parameter from the `cat.ml_jobs` API
* Removed the deprecated `size` parameter from the `cat.thread_pool` API
* Added the `time` parameter to the `cat.thread_pool` API

[discrete]
==== Documents

* Removed the deprecated `size` parameter from the `delete_by_query` API
* Removed the deprecated `size` parameter from the `update_by_query` API

[discrete]
==== Indices

* Removed the deprecated `indices.flush_synced` API
* Removed the deprecated `indices.freeze` API
* Removed the deprecated `indices.get_upgrade` API
* Removed the deprecated `indices.upgrade` API
* Removed the deprecated `indices.exist_type` API
* Removed the deprecated parameter `copy_settings` from the `indices.shrink` API
* Deprecated the `verbose` parameter of the `indices.segments` API

[discrete]
==== License / X-Pack

* Deprecated the `accept_enterprise` parameter of the `license.get` API
* Deprecated the `accept_enterprise` parameter of the `xpack.info` API

[discrete]
==== Machine Learning

* Added the **experimental** `ml.infer_trained_model_deployment` API
* Added the **experimental** `ml.put_trained_model_definition_part` API
* Added the **experimental** `ml.put_trained_model_vocabulary` API
* Added the **experimental** `ml.start_trained_model_deployment` API
* Added the **experimental** `ml.stop_trained_model_deployment` API
* Added the `timeout` parameter to the `ml.delete_trained_model` API
* Removed the deprecated `allow_no_jobs` parameter from the `ml.close_job` API
* Removed the deprecated `ml.find_text_structure` API
* Removed the deprecated `allow_no_datafeeds` parameter from the `ml.get_datafeed_stats` API
* Removed the deprecated `allow_no_datafeeds` parameter from the `ml.get_datafeeds` API
* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_job_stats` API
* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_jobs` API
* Removed the deprecated `allow_no_jobs` parameter from the `ml.get_overall_buckets` API

[discrete]
==== Search

* Added the **experimental** `knn_search` API

[discrete]
==== Searchable Snapshots

* Removed the deprecated `searchable_snapshots.repository_stats` API

[discrete]
==== Snapshots

* Changed the `snapshot.delete` API to accept multiple snapshots

[discrete]
==== Security

* Added the `security.enroll_kibana` API
* Added the `security.enroll_node` API
