Revision history for Search::Elasticsearch

6.00    2017-11-14
        Released 6.00 with default API for 6_0.
        Legacy 5_0 API now released separately
        Trace logging now includes content-type headers where appropriate
        Deprecation warnings are now parsed to extract the message only
        Improved boolean value handling in query string params - now accepts
          true, false, \1, \0, or a JSON::PP::Boolean object
        Handle removal of '.' from @INC in perl 5.26

5.02    2017-04-02

        * Boolean query params must be "true" or "false"
        * Added deprecation warnings
        * The scroll API requires a body with a named scroll_id parameter
        * Added support for pipeline parameter to bulk API, top level and metadata level
        * Added support for 413 HTTP status code - Request entity too large
        * Search::Elasticsearch::TestServer now takes an es_version parameter and
          works with 0.90, 1.0, 2.0, and 5.0
        * Added common parameters error_trace and human to all params

5.01    2016-10-19

        Doc fixes

5.00    2016-10-19

        This version adds Elasticsearch 5.x compatibility, and makes it the default.
        It also adds deprecation logging which logs to STDERR by default.

        The Hijk backend will not work with Elasticsearch 5.x until this bug
        is fixed: https://rt.cpan.org/Ticket/Display.html?id=118425

        BREAKING CHANGES:
        * The 0.90, 1.x, and 2.x compatible clients no longer ship by default.
          You should install one of the following:
              * Search::Elasticsearch::Client::2_0
              * Search::Elasticsearch::Client::2_0::Async
              * Search::Elasticsearch::Client::1_0
              * Search::Elasticsearch::Client::1_0::Async
              * Search::Elasticsearch::Client::0_90
              * Search::Elasticsearch::Client::0_90::Async
        * The code has been reorganised so that all client-related modules
          are under the S::E::API_VERSION::Client namespace.
          This includes S::E::Bulk and S::E::Scroll.
        * Plugin authors note: the format for the API in ...Role::API has changed.
        * S::E::Cxn::HTTP has been rolled into S::E::Cxn as Elasticsearch
          no longer supports other protocols.

2.03    2016-05-24

        Added register_qs() to allow plugins to expand known query string params
        Added api_version() to API roles so that plugins can determine which
        API version they should load.

2.02    2016-04-20

        Bug fix:
            Sniffed http addresses may or may not have the hostname/ prepended

2.01    2016-04-15

        Updated for Elasticsearch 2.3.0

        New features:
            * Added delete_by_query(), reindex(), and update_by_query()
            * Added tasks.list() and tasks.cancel()
            * Added ignore_unavailable to cat.snapshots()
            * Added attributes and explain to indices.analyze()
            * Added verbose to indices.segments()
            * S::ES::Error now implements TO_JSON
            * TestServer can now be used with forked processes


        Bug fixes:
            * Search::Elasticsearch::Error shouldn't be a Moo class
            * Search::Elasticsearch::Scroll can now be used in a forked process
            * Hijk is now optional as it doesn't work on windows
            * cat.snapshots requires a repository

2.00    2015-10-28

        The default client is now '2_0::Direct', for use with Elasticsearch 2.x.
        Specify client '1_0::Direct' if using with Elasticsearch 1.x.

        Breaking:
        * The field parameter to indices.get_field_mapping() has been renamed to fields

        New features:
        * Added fields param to Bulk helper
        * The name parameter to indices.get_template() can accept multiple options
        * Added indices.forcemerge() and deprecated indices.optimize()
        * The index parameter to indices.open() and indices.close() is required
        * Added allow_no_indices, expand_wildcards, and ignore_unavailable params
          to indices.flush_synced()
        * Added the timeout param to cluster.stats(), nodes.hot_threads(),
          nodes.stats(), and nodes.info()
        * cluster.health() can accept multiple indices
        * Added cat.repositories() and cat.snapshots()
        * Added detect_noop param to update()
        * search_shards() accepts multi values for index/type
        * delete_template() requires an id
        * Add fork protection to Scroll and Async::Scroll

        Bug fix:
        * Added missing debug QS param

1.99    2015-08-26

        This release provides support for Elasticsearch 2.0.0-beta1 and above,
        but the default client is still '1_0::Direct' and will remain so until
        version 2.00 is released.

        New features:
        * Added default_qs_params, which will be added to every request
        * Added max_time to the Bulk helper, to flush after a max elapsed time
        * Added filter_path parameter to all methods which return JSON
        * Added indices.flush_synced()
        * Added render_search_template()
        * Added cat.nodeattrs()
        * Added human flag to indices.get and indices.get_settings
        * Added rewrite flag to indices.validate_query
        * Added rewrite flag to indices.analyze
        * Added fields param to bulk()
        * Added update_all_types to indices.create and indices.put_mapping
        * Added request_cache to indices.put_warmer and indices.stats
        * Added request to indices.clear_cache
        * Added RequestTimeout exception for server-side timeouts
        * Updated Plugin::Watcher with 1.0 API

        Removed:
        * Removed id and id_cache from indices.clear_cache
        * Removed filter and filter_cache from indices.clear_cache
        * Removed ignore_conflict from indices.put_mapping

        Bugfixes:
        * Fixed error handling in Hijk
        * Fixed live test to non-existent IP address


1.20    2015-05-17

        Deprecated:
        * Search::Elasticsearch::Client::Direct in favour of
          Search::Elasticsearch::Client::1_0::Direct

        New features:
        * Added support for structured JSON exceptions in Elasticsearch 2.0
        * Added support for plugins
        * Added Search::Elasticsearch::Client::2_0::Direct for the upcoming
          Elasticsearch 2.0 with these changes:
            * removed delete_by_query()
            * removed termvector()
            * removed indices.delete_mapping()
            * removed nodes.shutdown()
            * removed indices.status()
            * added terminate_after param to search()
            * added dfs param to termvectors()
            * removed filter_keys param from indices.clear_cache()
            * removed full param from indices.flush()
            * removed force param from indics.optmize()
            * removed replication param from all CRUD methods
            * removed mlt() method

        Bug fix:
        * The bulk buffer was being cleared on a NoNodes exception

        Added class:
        Added methods:
        * field_stats()

        Added params:
        * allow_no_indices, expand_wildcards, ignore_unavailable to cluster.state()
        * fielddata_fields to search()
        * master_timeout to indices.get_template() and indices.exists_template()
        * detect_noop to update()
        * only_ancient_segments to upgrade()
        * analyze_wildcards, analyzer, default_operator, df, lenient, lowercase_expanded_terms,
          and q to count(), search_exists() and indices.validate_query()

        Removed methods:
        * benchmark.* - never released in Elasticsearch

        Also:
        * arrays of enum query string params are now flattened as CSV
        * enum expand_wildcards also accepts: none, all
        * Search::Elasticsearch is no longer a Moo class
        * Updated elasticsearch.org URLs to use elastic.co instead
        * the request body is retained in exceptions
        * upgraded Hijk to 0.20

1.19    2015-01-15
        Added method:
        * cat.segments()

        Added exceptions:
        * Unauthorized - for invalid user creds
        * SSL - for invalid SSL certs

        Renamed exception:
        * ClusterBlock -> Forbidden

        Also:
        * Simplified SSL support for HTTP::Tiny, LWP and improved instructions
        * Added optional tests for https/authz/authen

1.17    2014-12-29

        Bug fix:
        * handle_args were not being passed to all backends,
          meaning that (eg) cookies could not be used

        Dependency bump:
        * Log::Any 1.02 broke bwc - fixed to work with new version

        Added params:
        * op_type, version, version_type to indices.put_template
        * version, version_type to indices.delete_template
        * version, version_type to termvectors
        * master_timeout, timeout to cluster.put_settings
        * ignore_idle_threads to nodes.hot_threads
        * terminate_after to search

        Deprecated:
        * termvector in favour of termvectors (but old method still works for now)

1.16    2014-11-15
        Added dependency on Pod::Simple, which was causing
        installation on perl 5.8 to fail

        Added params:
        * percolate_preference and percolate_routing to percolate()

        Bug fix:
        * the index param is now required for indices.delete()

1.15    2014-11-05
        Enhancements:
         *  All backends (except Hijk) now default to not verifying
            SSL identities, but accept ssl_options to allow
            backend-specific configuration
         *  Improved Mojo exceptions

        Bug fix:
         *  is_https() didn't work

        Changed:
         *  index param to put_alias() is now required

        Added methods:
         *  index.get()
         *  search_exists()
         *  indices.upgrade()
         *  indices.get_upgrade()
         *  snapshot.verify_repository()

        Added parameters:
         *  query_cache to search(), clear_cache(), stats()
         *  wait_if_ongoing to flush()
         *  script_id and scripted_upsert to update()
         *  version and version_type to put_script(), get_script(),
            delete_script(), put_template(), get_template(), and
            delete_template()
         *  op_type to put_script() and put_template()
         *  metric to cluster_reroute()
         *  realtime to termvector() and mtermvector()
         *  dfs to termvector()

        Removed parameters:
         *  filter_metadata from cluster_reroute()
         *  search_query_hint from mlt()

        Bumped versions:
            JSON::XS        2.26
            Package::Stash  0.34
            Log::Any        0.15


1.14    2014-07-24
        Added support for indexed scripts and indexed templates.

1.13    2014-06-13
        Breaking change:
            The Scroll helper used to pass the scroll ID to
            scroll() and clear_scroll() in the query string by default,
            with the scroll_in_body parameter to change the behaviour.
            This was causing frequent errors with long scroll IDs, so
            the new default behaviour is to pass the scroll ID in the
            body, with the scroll_in_qs parameter to change that
            behaviour.
        All Search::Elasticsearch HTTP backends are now fork safe.
        Added track_scores param to search()
        Added create param to indices.put_template()
        Removed index_templates param from cluster.state()
        Removed indices_boost param from search()
        Added percolate_format param to percolate()
        Added cat.fielddata()

1.12    2014-05-09
        Fixed bug when trying to reindex from a subref
        Added search_shards()
        Added char_filters to indices.analyze()
        Removed index_templates from cluster.state()
        Added conf to TestServer for passing arbitrary config

1.11    2014-04-23
        Switched default Serializer::JSON to use JSON::MaybeXS, and added
        Serializer backends for Cpanel::JSON::XS, JSON::XS and JSON::PP

        Added scroll_in_body flag for Scroll helper

        Added support for:
          * search_template()
          * snapshot->status()
          * indices->recovery()
          * benchmark()
          * list_benchmarks()
          * abort_benchmark()

1.10    2014-03-05
        Moved all modules to Search::Elasticsearch namespace.
        See https://github.com/elasticsearch/elasticsearch-perl/issues/20

1.05    2014-03-05

        Deprecated the Elasticsearch namespace in favour of Search::Elasticsearch.
        See https://github.com/elasticsearch/elasticsearch-perl/issues/20

        Improved the Bulk->reindex() API. Now accepts a remote $es object.
        Improved documentation.
        Added Hijk backend.

1.04    2014-02-27

        Changed the default Cxn to HTTPTiny v0.043. Now provides persistent
        connections and is a lot faster than LWP.

        Changed ES::Scroll to pass the scroll_id in the URL instead of the
        body. Better support for older versions and servers behind caching
        proxies.

1.03    2014-02-12
        Fixed node sniffing to work across 0.90 and 1.0

1.02    2014-02-11
        Fixed bug in Elasticsearch::Scroll::next when called in scalar context

1.01    2014-02-09
        Fixed plugin loader to work with latest version of Module::Runtime
        which complains about undefined versions

1.00    2014-02-07
        API updated to be compatible with v1.x branch of Elasticsearch.

        BACKWARDS COMPATIBILITY: To use this client with versions of
        Elasticsearch before 1.x, specify the client version as:

            $es = Elasticsearch->new(
                client => '0_90::Direct'
            );

0.76    2013-12-02
        Added support for send_get_body_as GET/POST/source
        Added timeout to bulk API

0.75    2013-10-24
        Fixed the sniff regex to accommodate hostnames when present

0.74    2013-10-03
        Fixed a timeout bug in LWP with persistent connections
        and bad params when using https

0.73    2013-10-02
        Added Elasticsearch::Cxn::LWP
        Added Elasticsearch::TestServer
        Die with explanation if a user on a case-insensitive file system
        loads this module instead of ElasticSearch

0.72    2013-09-29
        Added Elasticsearch::Bulk and Elasticsearch::Scroll
        Changed `https` to `use_https` for compatibility with elasticsearch-py
        Numerous fixes for different Perl versions, and Moo 1.003 now required

0.71    2013-09-24
        Fixed dist.ini to list dependencies correctly

0.70    2013-09-24
        Bumped version numbers because CPAN clashes
        with ElasticSearch.pm

0.04    2013-09-23
        First release

