Revision history for ElasticSearch

0.38    2011-07-03
        - Integrated ElasticSearch::SearchBuilder
        - Deprecated the use of query types as top level params to count()
          and delete_by_query() in favour of query or queryb
        - trace_calls() now also accepts a filehandle (thanks FERREIRA)
        - TestServer now supports ES_TRANSPORT=all

0.37    2011-05-01

         -  ElasticSearch::ScrolledSearch

            $scrolled_search->next() now returns 1 result by default, instead
            of $size results, to make it easier to write:

                while (my $result = $scroll->next) {}

         - ElasticSearch::TestServer is now an object which subclasses
           ElasticSearch itself.  connect_to_server() has been removed.
           Also, the port parameter can be used to specify a custom start port
           when starting the test server, making it easier to run the
           test server while there is an existing ES server running.

0.36    2011-04-24
        Updated to work with ElasticSearch version 0.16.0

        New features:
         - no_refresh:
           Disable the automatic discovery of live nodes, to work with
           remote clusters or proxied clusters

         - scrolled_search():
           Convenience iterator to wrap search/scroll requests

         - reindex():
           Utility to reindex data from one index to another, or one
           cluster to another

         - use_index()/use_type():
           Set default index/type parameters

         - searchqs():
           URI/query string search, (as opposed to search() which uses a
           request body)

         - New search_type's : 'scan' and 'count'

         - index_settings():
           Retrieve index settings

0.35    2011-04-07
        Added the 'dynamic_templates' option to put_mapping

0.34    2011-03-20

        Fixed the tests for scrolling - turns out sorting when scrolling works
        correctly. It was my tests which were bad.

0.33    2011-03-19
        Added the ElasticSearch::Transport::HTTPTiny backend

0.32    2011-03-19

         - Added as_json as an arg to all ES requests.
         - Fixed a logic bug when setting the port manually in
         - Fixed a bug in ElasticSearch::TestServer which was
           preventing it from working on OSX

         Thanks to PERLER for the above

          - Changed some query syntax in t/10-queryparser.t for perl 5.8.3

0.31    2011-03-16

        Fixed a bad test plan

0.30    2011-03-16

        - Added some missing requirements to Build.PL
        - scroll() now accepts a 'scroll' parameter and works (but
          sorting when scrolling still broken on the server)
        - now also preserves the _parent and _routing fields

0.29    2011-03-15
         - Updated the Changes file

0.28    2011-03-14

        Support added for:
         - Percolators
               - create_percolator()
               - delete_percolator()
               - get_percolator()
               - percolate()

         - Open / Close index
               - open_index()
               - close_index()

         - Index templates
               - create_index_template()
               - delete_index_template()
               - index_template()

         - Routing
         - Parent docs
         - Versioning
         - Analyzer
               - analyze()

         - ElasticSearch::QueryParser
               - Parses and filters query strings, to ensure that user
                 data is in an acceptable form for passing to ES

         - ElasticSearch::TestServer
               - starts a test server for use by the test suite
               - factored out to make it easier for others to use

         - create_index() now supports adding mappings at the same time
         - Added bulk_create(), bulk_index() and bulk_delete()
         - Bulk actions now accept _id and id etc, which means that
           search results can be passed directly to bulk without renaming
           these parameters
         - Added river_status()
         - New errors
            - ElasticSearch::Error::Conflict - versioning conflict
            - ElasticSearch::Error::Missing - requested index/doct etc missing
            - both these errors inherit from ElasticSearch::Error::Request
         - Added ignore_missing to many methods which allows you to ignore
           Missing errors
         - Added query_parser
         - added timeout() as sugar for $es->transport->timeout()
         - added refresh_servers() as sugar for $es->transport->refresh_servers()

        In ElasticSearch::Transport
         - added max_requests() to force a refresh of known live nodes
           every $max_requests
         - on the first request, the list of live nodes is automatically
         - made httplite recognise more error states as temporary Connection
         - added support for recognising 404 and 409 HTTP codes
         - upgraded Thrift to version 5.0
         - improvements to logging

          - added examples/
          - fixed a bug in the Makefile.PL

0.27    2010-10-21
        Fixed an undefined bug in Transport::refresh_servers which would
        die if no nodes were found

0.26    2010-10-20
        Added a missing dependency on

0.25    2010-10-20
        Another ambiguous use of localtime in ElasticSearch::Transport

0.24    2010-10-20
        Corrected an ambiguous use of localtime in ElasticSearch::Transport
        Added examples/
        Minor tidying to tests

0.23    2010-10-19
        POD corrections

0.22    2010-10-19
        Support ElasticSearch version 0.12.0

        Added the bulk() method, for bulk indexing, creating and deleting
        Added create_river(), delete_river() and get_river()
        Added delete_mapping()
        Added error_trace()

        Completely refactored ElasticSearch to enable pluggable backends:
         - The request parser methods now live in ElasticSearch/
           although they are loaded into the ElasticSeach namespace
         - Added ElasticSearch::Transport as a transport base class
         - Added ElasticSearch::Transport::HTTP (default) as the LWP backend
         - Added ElasticSearch::Transport::HTTPLite as the HTTP::Lite backend
         - Added ElasticSearch::Transport::Thrift as the Thrift backend
         - Added ElasticSearch::Error class for exception objects
         - Added ElasticSearch::Util with some generally useful utilities
         - A number of methods have from ElasticSearch to
           ElasticSearch::transport including current_server(), servers(),
         - Removed the debug() method - now use $ElasticSearch::DEBUG instead
         - Added filter_keywords to ElasticSearch::Util

0.21    2010-09-18
        Supports ElasticSearch version 0.10.0
        Added the _source parameter to put_mapping()

0.20    2010-09-04
        Supports ElasticSearch version 0.10.0
        Added update_index_settings() plus test
        Added pod coverage test

0.19    2010-08-19
        Supports ElasticSearch version 0.9.1
        Minor bug fix to cluster_state
        Updated tests to use facet_filter instead of filter

0.18    2010-08-01
        Updated Changes file

0.17    2010-08-01

        Supports ElasticSearch version 0.9, which removes support for some
        features of older versions.

      - In search() added support for 'script_fields'
      - In count() and delete_by_query() added support for 'custom_score',
        'fuzzy', 'span_term', 'span_first', 'span_near', 'span_not',
      - Removed terms() - now handled by search facets
      - Added the 'full' parameter to flush_index()
      - Changed put_mapping() to automatically prefix the type properties
        definition with the type name
      - Removed get_mapping() and replaced it with mapping(), which uses
        the newly exposed GET _mapping API
      - Added current_server_version()
      - Added the 'filter_nodes', 'filter_metadata', 'filter_routing_table'
        and 'filter_indices' params to cluster_state()

0.16    2010-05-20
        Added an ElasticSearch::Error::Timeout error class, to catch
        occassions when the request times out, instead of failing
        for a different reason.

        Also, catch 'Server closed connection' errors, and automatically
        refresh_servers and retry the request.

0.15    2010-05-16
        Fixed a bug in refresh_servers() introduced in 0.14, when forking

0.14    2010-05-16
        The object now stores the original servers parameter, so that
        if the nodes disassociate and the live server list is limited,
        the object can still try the original servers.

0.13    2010-05-13
        Added nodes_stats(), shutdown(), restart() and camel_case()
        Removed Alien::ElasticSearch, as it is now easier to install
        ElasticSearch directly.
        Tested against ElasticSearch version 0.7.0

0.12    2010-04-16
        Added scroll() and the indices_boost param to search()
        Tested against ElasticSearch version 0.6.0

0.11    2010-04-07
        Updated changelog

0.10    2010-04-07
        Fixed the duration regex
        Improved docs for shutdown()

0.09    2010-04-07
        Changed refresh_servers to handle http_address and httpAddress
        Added a terms filter test

0.08    2010-04-05
      - Changed all_field to _all

0.07    2010-04-05

      - All tests pass as of version 8cfa04cea3bc2317ee613384ced4da20cf2737aa
        on 2010-04-04:

      - Updated the API to take into account ElasticSearch's change from
        using camelCase to underscore_separators
      - create() now uses the /_create postfix instead of op_type=create,
        although that flag is still available through index() and set()
      - Changed more_like_this and more_like_this_field to mlt and mlt_field
      - Changed fuzzy_like_this and fuzzy_like_this_field to flt and flt_field
      - Changed term() to use gt/gte/lt/lte instead of from/to and
      - put_mapping now defaults to { ignore_conflicts => 0 }, so the
        default now is to complain
      - In mlt, boost_terms:boolean and boost_terms_factor:float have now
        been merged to boost_terms:float

0.06    2010-04-03
      - The test suite now requires Alien::ElasticSearch, and uses its own
        config file and work dir, so as not to interfere with existing
      - Added clear_cache()
      - Added fuzzy_like_this and fuzzy_like_this_field clauses to
        count() and delete_by_query()
      - Added more_like_this()
      - Added more_like_this/more_like_this_field clauses to count()
        and delete_by_query()
      - Changed exclude_from and exclude_to to from_inclusive and to_inclusive
        in the terms() query
      - the filteredQuery clause renamed to 'filtered' as per a change in ES
      - Added aliases() and get_aliases()
      - Deleted the QueryDSL doc, as the ElasticSearch docs are much improved

0.05    2010-03-04
      - Delayed connecting to the cluster until actually required (previously
        it refreshed the server list in new() )
      - Restructured the internals again, to make it easier to read
      - Added cluster_health()
      - Fixed the test suite so that auto-started nodes don't take over
        the terminal
      - Enabled more tests as ElasticSearch now less buggy

0.04    2010-02-23
      - Added terms()
      - Added get_mapping()
      - Renamed create_mapping() to put_mapping()
      - Added ignore_duplicate param to put_mapping
      - skip create-duplicate-mapping test if cluster has more than one nodes

0.03    2010-02-21
      - Corrected the docs for search/count/delete_by_query
      - Added POD for the Query DSL
      - Added a SIG{INT} to the test file, so that it shuts down the servers
        if the test suite is interrupted

0.02    2010-02-21
      - Rewrote the module completely to use a dispatch table -
        makes it easier to extend
      - Added a test suite
      - Added Alien::ElasticSearch so that we can test against a live server

0.01    2010-02-16
        First version, released on an unsuspecting world.