.. _changelog:

Changelog
=========

5.5.2 (2018-01-12)
------------------

 * Allow connection to SSL ES instances without verifying certs using
   client key and client cert.

5.5.1 (2017-11-10)
------------------

 * added ``scroll_kwargs`` to the ``scan`` helper

5.5.0 (2017-11-10)
------------------

 * ``streaming_bulk`` helper now supports retries with incremental backoff
 * ``scan`` helper properly checks for successful shards instead of just
   checking ``failed``
 * compatible release with elasticsearch ``5.6.4``
 * fix handling of UTF-8 surrogates

5.4.0 (2017-05-18)
------------------

 * ``bulk`` helpers now extract ``pipeline`` parameter from the action
   dictionary.

5.3.0 (2017-03-30)
------------------

Compatibility with elasticsearch 5.3

5.2.0 (2017-02-12)
------------------

The client now automatically sends ``Content-Type`` http header set to
``application/json``. If you are explicitly passing in other encoding than
``json`` you need to set the header manually.

5.1.0 (2017-01-11)
------------------

 * Fixed sniffing

5.0.1 (2016-11-02)
------------------

Fixed performance regression in ``scan`` helper

5.0.0 (2016-10-19)
------------------

Version compatible with elasticsearch 5.0

 * when using SSL certificate validation is now on by default. Install
   ``certifi`` or supply root certificate bundle.
 * ``elasticsearch.trace`` logger now also logs failed requests, signature of
   internal logging method ``log_request_fail`` has changed, all custom
   connection classes need to be updated
 * added ``headers`` arg to connections to support custom http headers
 * passing in a keyword parameter with ``None`` as value will cause that param
   to be ignored

2.4.0 (2016-08-17)
------------------

 * ``ping`` now ignores all ``TransportError`` exceptions and just returns
   ``False``
 * expose ``scroll_id`` on ``ScanError``
 * increase default size for ``scan`` helper to 1000

Internal:

 * changed ``Transport.perform_request`` to just return the body, not status as well.

2.3.0 (2016-02-29)
------------------

 * added ``client_key`` argument to configure client certificates
 * debug logging now includes response body even for failed requests

2.2.0 (2016-01-05)
------------------

Due to change in json encoding the client will no longer mask issues with
encoding - if you work with non-ascii data in python 2 you must use the
``unicode`` type or have proper encoding set in your environment.

 * adding additional options for ssh - ``ssl_assert_hostname`` and
   ``ssl_assert_fingerprint`` to the default connection class
 * fix sniffing

2.1.0 (2015-10-19)
------------------

  * move multiprocessing import inside parallel bulk for Google App Engine

2.0.0 (2015-10-14)
------------------

 * Elasticsearch 2.0 compatibility release

1.8.0 (2015-10-14)
------------------

 * removed thrift and memcached connections, if you wish to continue using
   those, extract the classes and use them separately.
 * added a new, parallel version of the bulk helper using thread pools
 * In helpers, removed ``bulk_index`` as an alias for ``bulk``. Use ``bulk``
   instead.

1.7.0 (2015-09-21)
------------------

 * elasticsearch 2.0 compatibility
 * thrift now deprecated, to be removed in future version
 * make sure urllib3 always uses keep-alive

1.6.0 (2015-06-10)
------------------

 * Add ``indices.flush_synced`` API
 * ``helpers.reindex`` now supports reindexing parent/child documents

1.5.0 (2015-05-18)
------------------

 * Add support for ``query_cache`` parameter when searching
 * helpers have been made more secure by changing defaults to raise an
   exception on errors
 * removed deprecated options ``replication`` and the deprecated benchmark api.
 * Added ``AddonClient`` class to allow for extending the client from outside

1.4.0 (2015-02-11)
------------------

 * Using insecure SSL configuration (``verify_cert=False``) raises a warning
 * ``reindex`` accepts a ``query`` parameter
 * enable ``reindex`` helper to accept any kwargs for underlying ``bulk`` and
   ``scan`` calls
 * when doing an initial sniff (via ``sniff_on_start``) ignore special sniff timeout
 * option to treat ``TransportError`` as normal failure in ``bulk`` helpers
 * fixed an issue with sniffing when only a single host was passed in

1.3.0 (2014-12-31)
------------------

 * Timeout now doesn't trigger a retry by default (can be overriden by setting
   ``retry_on_timeout=True``)
 * Introduced new parameter ``retry_on_status`` (defaulting to ``(503, 504,
   )``) controls which http status code should lead to a retry.
 * Implemented url parsing according to RFC-1738
 * Added support for proper SSL certificate handling
 * Required parameters are now checked for non-empty values
 * ConnectionPool now checks if any connections were defined
 * DummyConnectionPool introduced when no load balancing is needed (only one
   connection defined)
 * Fixed a race condition in ConnectionPool

1.2.0 (2014-08-03)
------------------

Compatibility with newest (1.3) Elasticsearch APIs.

 * Filter out master-only nodes when sniffing
 * Improved docs and error messages

1.1.1 (2014-07-04)
------------------

Bugfix release fixing escaping issues with ``request_timeout``.

1.1.0 (2014-07-02)
------------------

Compatibility with newest Elasticsearch APIs.

 * Test helpers - ``ElasticsearchTestCase`` and ``get_test_client`` for use in your
   tests
 * Python 3.2 compatibility
 * Use ``simplejson`` if installed instead of stdlib json library
 * Introducing a global ``request_timeout`` parameter for per-call timeout
 * Bug fixes

1.0.0 (2014-02-11)
------------------

Elasticsearch 1.0 compatibility. See 0.4.X releases (and 0.4 branch) for code
compatible with 0.90 elasticsearch.

 * major breaking change - compatible with 1.0 elasticsearch releases only!
 * Add an option to change the timeout used for sniff requests (``sniff_timeout``).
 * empty responses from the server are now returned as empty strings instead of None
 * ``get_alias`` now has ``name`` as another optional parameter due to issue #4539
   in es repo. Note that the order of params have changed so if you are not
   using keyword arguments this is a breaking change.

0.4.4 (2013-12-23)
------------------

 * ``helpers.bulk_index`` renamed to ``helpers.bulk`` (alias put in place for
   backwards compatibility, to be removed in future versions)
 * Added ``helpers.streaming_bulk`` to consume an iterator and yield results per
   operation
 * ``helpers.bulk`` and ``helpers.streaming_bulk`` are no longer limited to just
   index operations.
 * unicode body (for ``incices.analyze`` for example) is now handled correctly
 * changed ``perform_request`` on ``Connection`` classes to return headers as well.
   This is a backwards incompatible change for people who have developed their own
   connection class.
 * changed deserialization mechanics. Users who provided their own serializer
   that didn't extend ``JSONSerializer`` need to specify a ``mimetype`` class
   attribute.
 * minor bug fixes

0.4.3 (2013-10-22)
------------------

 * Fixes to ``helpers.bulk_index``, better error handling
 * More benevolent ``hosts`` argument parsing for ``Elasticsearch``
 * ``requests`` no longer required (nor recommended) for install

0.4.2 (2013-10-08)
------------------

 * ``ignore`` param accepted by all APIs
 * Fixes to ``helpers.bulk_index``

0.4.1 (2013-09-24)
------------------

Initial release.
