Release notesedit

8.1.2 (2022-03-30)edit

  • Client is compatible with Elasticsearch 8.1.2

8.1.1 (2022-03-22)edit


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


  • Changed the fields parameter of the field_caps API to be required.

8.1.0 (2022-03-08)edit


  • Added the transform.reset_transform API

8.0.0 (2022-02-10)edit


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


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


  • 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


  • 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


  • 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


  • Removed the deprecated size parameter from the delete_by_query API
  • Removed the deprecated size parameter from the update_by_query API


  • 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

License / X-Packedit

  • Deprecated the accept_enterprise parameter of the license.get API
  • Deprecated the accept_enterprise parameter of the API

Machine Learningedit

  • 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


  • Added the experimental knn_search API

Searchable Snapshotsedit

  • Removed the deprecated searchable_snapshots.repository_stats API


  • Changed the snapshot.delete API to accept multiple snapshots


  • Added the security.enroll_kibana API
  • Added the security.enroll_node API

7.17.1 (2022-02-28)edit

  • Fixed AiohttpHttpConnection` to not leak TLS connections when the socket isn’t explicitly shutdown by the peer
  • Fixed the from parameter to be rewritten to from_ when used with the scan and async_scan helpers

7.17.0 (2022-02-01)edit

  • Client is compatible with Elasticsearch 7.17.0

7.16.3 (2022-01-13)edit

  • Client is compatible with Elasticsearch 7.16.3

7.16.2 (2021-12-27)edit

  • Client is compatible with Elasticsearch 7.16.2

7.16.1 (2021-12-13)edit


  • Fixed issue where the AIOHttpConnection wouldn’t log query parameters for URLs.

7.16.0 (2021-12-07)edit


  • Deprecated the send_get_body_as parameter. This parameter is no longer necessary as APIs all use non-GET HTTP methods when using a body.
  • Removal of body, params, and other per-request parameters has been delayed beyond 8.0.0. Changed deprecation warnings to mention "future version" instead of 8.0.0.


  • Fixed an issue with unicode HTTP headers with the urllib3 HTTP client
  • Fixed an issue with the scan helper to always set the sort and scroll parameters


  • Changed the keep_alive parameter of the open_point_in_time API to be required to reflect its required status within Elasticsearch
  • Added the track_total_hits parameter to the search_mvt API


  • Changed the fleet.global_checkpoints API from experimental to stable
  • Added the experimental API
  • Added the fleet.msearch experimental API


  • Added the indices.modify_data_stream API


  • Added the if_version parameter to the ingest.put_pipeline API


  • Added the migration.get_feature_upgrade_status API
  • Added the migration.post_feature_upgrade API

Machine Learningedit

  • Added the defer_definition_decompression parameter to the ml.put_trained_model API


  • Added the transform.upgrade_transforms API

7.15.2 (2021-11-10)edit


  • Documented additional options the metric parameter of the API.

7.15.1 (2021-10-14)edit


  • Fixed a performance regression in JSONSerializer.default() when numpy and pandas weren’t installed.
  • Changed the DeprecationWarning for the body parameter to be a "removed in a future version" instead of "removed in 8.0" in line with the 8.0 roadmap.


  • The index parameter of the open_point_in_time API is now required, was optional.

7.15.0 (2021-09-22)edit


  • Added more precise type hints to many API parameters
  • Added explicit parameters to AsyncTransport and AIOHttpConnection
  • Added MapboxVectorTileSerializer for handling the application/vnd.mapbox-vector-tile mimetype. Because this mimetype is binary rather than text the raw response bytes are forwarded from the serializer without decoding
  • Reduced amount of time to import the elasticsearch module by delaying imports of pandas and numpy until later in the JSON serialization stage if necessary
  • Deprecated positional arguments for APIs, instead use keyword arguments exclusively.


  • Added the search_mvt experimental API
  • Added body field parameters to the search, scroll, and clear_scroll APIs
  • Deprecated the body parameter of the search, scroll, and clear_scroll APIs


  • Added body field parameters to the update API
  • Added the document parameter to the create and index APIs
  • Deprecated the body parameter of the create, index, and update APIs


  • Added the indices.disk_usage experimental API
  • Added the indices.fields_usage_stats experimental API
  • Added body field parameters to the indices.create API
  • Deprecated the body parameter of the indices.create API

Machine Learningedit

  • Added the ignore_unavailable, allow_no_indices, ignore_throttled, and expand_wildcards parameters to the ml.put_job API


  • Added the nodes.clear_repositories_metering_archive experimental API
  • Added the nodes.get_repositories_metering_info experimental API
  • Added the shards option to the index_metric parameter of the nodes.stats API
  • Deprecated the doc_type parameter of the nodes.hot_threads API, instead use the type parameter


  • Added the security.query_api_keys API


  • Deprecated the doc_type parameter of the license.post_start_trial API, instead use the type parameter

7.14.0 (2021-08-02)edit

  • Added check that client is connected to an Elasticsearch cluster. If the client isn’t connected to a supported Elasticsearch cluster the UnsupportedProductError exception will be raised.


  • Added the terms_enum beta API
  • Removed the query_and_fetch and dfs_query_and_fetch options in the search_type parameter to the msearch, msearch_template and search_template APIs

Index Lifecycle Managementedit

  • Added the ilm.migrate_to_data_tiers API

Machine Learningedit

  • Added the ml.reset_job API


  • Added the security.saml_authenticate API
  • Added the security.saml_complete_logout API
  • Added the security.saml_invalidate API
  • Added the security.saml_logout API
  • Added the security.saml_prepare_authentication API
  • Added the security.saml_service_provider_metadata API


  • Added the sql.delete_async API
  • Added the sql.get_async API
  • Added the sql.get_async_status API


  • Added the include_repository parameter to snapshot.get API
  • Added the rarely_abort_writes parameter to the snapshot.repository_analyze API

7.13.4 (2021-07-20)edit

  • Client is compatible with Elasticsearch 7.13.4

7.13.3 (2021-07-07)edit

  • NameError would be raised on Python 2.7 and 3.4 when a connection error would have otherwise been raised.

7.13.2 (2021-06-21)edit

  • Fixed Transport.perform_request() to properly reraise RecursionError
  • Fixed AIOHttpConnection to no longer send Accept-Encoding: gzip, deflate when http_compress=None. Instead now sends no Accept-Encoding header in the default case


  • Added the snapshot.repository_analyze API

7.13.1 (2021-06-02)edit

  • Client is compatible with Elasticsearch 7.13.1

7.13.0 (2021-05-25)edit

  • Added support for compatibility header for Elasticsearch. If the environment variable ELASTIC_CLIENT_APIVERSIONING=1 is set the client will send the headers Accept and Content-Type with the following value: application/vnd.elasticsearch+json;compatible-with=7.


  • Added the include_unloaded_segments parameter to the cat.nodes API
  • Added the features.reset_features experimental API
  • Added the fleet.global_checkpoints expiremental API
  • Added the ingest.geo_ip_stats API

Machine Learningedit

  • Added the ml.delete_trained_model_alias API
  • Added the ml.preview_data_frame_analytics API
  • Added the ml.put_trained_model_alias API
  • Changed the ml.delete_data_frame_analytics, ml.delete_trained_model, ml.explain_data_frame_analytics, ml.get_data_fram_analytics, ml.get_data_frame_analytics_stats, ml.get_trained_models, ml.get_trained_models_stats, ml.put_trained_model, ml.start_data_frame_analytics, ml.stop_data_frame_analytics, ml.update_data_frame_analytics APIs from beta to stable.


  • Added include_unloaded_segments parameter to node.stats API

Searchable Snapshotsedit

  • Added the searchable_snapshots.cache_stats experimental API


  • Added the security.clear_cached_service_tokens beta API
  • Added the security.create_service_token beta API
  • Added the security.delete_service_token beta API
  • Added the security.get_service_accounts beta API
  • Added the security.get_service_credentials beta API


  • Added the shutdown.delete_node experiemental API
  • Added the shutdown.get_node experimental API
  • Added the shutdown.put_node experimental API


  • Added the index_details parameter to snapshot.get API

Text Structureedit

  • Changed the text_structure.find_structure API from experimental to stable

7.12.1 (2021-04-27)edit

Text Structureedit

  • Changed the text_structure.find_text_structure API from experimental to stable

7.12.0 (2021-03-23)edit


  • Changed autoscaling.delete_autoscaling_policy, autoscaling.get_autoscaling_policy, and autoscaling.put_autoscaling_policy APIs from experimental to stable


  • Added eql.get_status API


  • Added logstash.delete_pipeline, logstash.get_pipeline, and logstash.put_pipeline APIs

Machine Learningedit

  • Removed the experimental ml.find_text_structure API

Searchable Snapshotsedit

  • Added storage parameter to the searchable_snapshots.mount API
  • Added level parameter to the searchable_snapshots.stats API


  • Added the min_compatible_shard_node parameter to search()

Text Structureedit

  • Added experimental text_structure.find_text_structure API

7.11.0 (2021-02-10)edit

  • Added support for 7.11 APIs.
  • Added the X-Elastic-Client-Meta HTTP header and the meta_header parameter for controlling the header (#1473).
  • Added ElasticsearchWarning which is raised when the Warning HTTP header is returned from Elasticsearch. ElasticsearchDeprecationWarning is now an alias for this warning type (#1495).

7.10.1 (2020-12-09)edit

  • Fixed issue where the Scan helper would fail if a scroll response returned without a value for _shards.skipped (#1451).
  • Fixed handling of IPv6 hosts with a port in the computed property (#1460).
  • Fixed documented task management API stability, should have been as "experimental" (#1471).
  • Changed deprecated collections.Mapping in favor of for Python 3.9 (#1443).

7.10.0 (2020-11-11)edit

  • Added support for Elasticsearch 7.10 APIs.
  • Added basic type stubs for static type checking and IDE auto-complete of API parameters (#1297, #1406).
  • Added support for Optimistic Concurrency Control options (_if_seq_no/_if_primary_term) to bulk helpers (#1387).
  • Added support for passing _source with "_op_type": "update" bulk helpers (#1387).
  • Fixed bug where Connection.log_request_failure() call would receive the compressed HTTP body rather than uncompressed when an error is raised for RequestsHttpConnection (#1394).
  • Fix a typo in AsyncTransport where sniff_timeout was used instead of sniffer_timeout (#1431).
  • Removed explicit yarl dependency from [async] extra to avoid issue where pip would override aiohttp's pin of yarl. This is not a problem if you install with --use-feature=2020-resolver. Users should see no changes (#1401).

7.9.1 (2020-08-19)edit

  • Fixed the import of async helpers which were not available in 7.9.0 (#1353).
  • Added support for url_prefix when using AIOHttpConnection (#1357).

7.9.0 (2020-08-18)edit

  • Added support for ES 7.9 APIs.
  • Fixed retries to not raise an error when sniff_on_connection_error=True and a TransportError is raised during the sniff step. Instead the retry will continue or the error that triggered the retry will be raised (#1279, #1326).

7.8.1 (2020-07-30)edit

  • Added the accept_enterprise parameter to API (#1337).

7.8.0 (2020-06-18)edit

  • Added support for ES 7.8 APIs.
  • Added support for async/await with asyncio via AsyncElasticsearch. See documentation on `using Asyncio with Elasticsearch (#1232, #1235, #1236).
  • Added async helpers async_bulk, async_streaming_bulk, async_scan, and async_reindex (#1260).
  • Updated exists_source API to use non-deprecated Elasticsearch API routes when doc_type is not specified to suppress deprecation warnings (#1272).

7.7.1 (2020-05-26)edit

  • Updated create, update, explain, get_source, and termvectors APIs to use non-deprecated Elasticsearch API routes when doc_type is not specified to suppress deprecation warnings (#1253).

7.7.0 (2020-05-13)edit

  • Added support for ES 7.7 APIs (#1182).
  • Added ElasticsearchDeprecationWarning which is raised when a Warning HTTP header is sent by Elasticsearch (#1179).
  • Added support for serializing numpy and pandas data types to JSONSerializer (#1180).
  • Added certifi as a dependency so HTTPS connections work automatically.
  • Fixed duplicated parameters in some API docstrings (#1169, thanks to Morten Hauberg).

7.6.0 (2020-03-19)edit

  • Added support for ES 7.6 APIs.
  • Added support for X-Opaque-Id to identify long-running tasks.
  • Added support for HTTP compression to RequestsHttpConnection.
  • Updated default setting of http_compress when using cloud_id to True.
  • Updated default setting of sniffing when using cloud_id to False.
  • Updated default port to 443 if cloud_id and no other port is defined on the client or within cloud_id.
  • Updated GET HTTP requests that contain a body to POST where the API allows this to fix proxies rejecting these requests.
  • Fix regression of client.cluster.state() where the default metric should be set to "_all" if an index is given (#1143).
  • Fix regression of client.tasks.get() without a task_id having similar functionality to client.tasks.list() This will be removed in v8.0 of elasticsearch-py (#1157).

7.5.1 (2020-01-19)edit

  • All API is now auto generated.
  • Deprecated the .xpack namespace.
  • Update client to support ES 7.5 APIs.

7.1.0 (2019-11-14)edit

  • Fix sniffing with http.publish_host.
  • Fix request_timeout for indices APIs.
  • Allow access to x-pack features without xpack namespace.
  • Fix mark dead.

7.0.5 (2019-10-01)edit

  • Fix verify_certs=False.

7.0.4 (2019-08-22)edit

  • Fix wheel distribution.

7.0.3 (2019-08-21)edit

  • Remove sleep in retries.
  • Pass scroll_id through body in scroll.
  • Add user-agent.

7.0.2 (2019-05-29)edit

  • Add connection parameter for Elastic Cloud cloud_id.
  • ML client uses client object for _bulk_body requests.

7.0.1 (2019-05-19)edit

  • Use black to format the code.
  • Update the test matrix to only use current pythons and 7.x ES.
  • Blocking pool must fit thread_count.
  • Update client to support missing ES 7 API’s and query params.

7.0.0 (2019-04-11)edit

  • Removed deprecated option update_all_types.
  • Using insecure SSL configuration (verify_cert=False) raises a warning, this can be not showed with ssl_show_warn=False.
  • Add support for 7.x APIs in Elasticsearch both xpack and oss flavors.
  • Ordering of parameters may have changed for some APIs compared to 6.8. Use keyword arguments instead of positional arguments to work-around this change.