The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 017
MANIFEST 16
META.json 22
META.yml 22
Makefile.PL 22
README 11
lib/Search/Elasticsearch/Bulk.pm 22
lib/Search/Elasticsearch/Client/0_90/Direct/Cluster.pm 22
lib/Search/Elasticsearch/Client/0_90/Direct/Indices.pm 22
lib/Search/Elasticsearch/Client/0_90/Direct.pm 211
lib/Search/Elasticsearch/Client/Direct/Cat.pm 222
lib/Search/Elasticsearch/Client/Direct/Cluster.pm 32
lib/Search/Elasticsearch/Client/Direct/Indices.pm 23
lib/Search/Elasticsearch/Client/Direct/Nodes.pm 22
lib/Search/Elasticsearch/Client/Direct/Snapshot.pm 22
lib/Search/Elasticsearch/Client/Direct.pm 34
lib/Search/Elasticsearch/Cxn/Factory.pm 22
lib/Search/Elasticsearch/Cxn/HTTPTiny.pm 22
lib/Search/Elasticsearch/Cxn/Hijk.pm 39
lib/Search/Elasticsearch/Cxn/LWP.pm 22
lib/Search/Elasticsearch/CxnPool/Sniff.pm 22
lib/Search/Elasticsearch/CxnPool/Static/NoPing.pm 22
lib/Search/Elasticsearch/CxnPool/Static.pm 22
lib/Search/Elasticsearch/Error.pm 22
lib/Search/Elasticsearch/Logger/LogAny.pm 22
lib/Search/Elasticsearch/Role/API/0_90.pm 1716
lib/Search/Elasticsearch/Role/API.pm 4636
lib/Search/Elasticsearch/Role/Bulk.pm 22
lib/Search/Elasticsearch/Role/Client/Direct.pm 22
lib/Search/Elasticsearch/Role/Client.pm 22
lib/Search/Elasticsearch/Role/Cxn/HTTP.pm 314
lib/Search/Elasticsearch/Role/Cxn.pm 22
lib/Search/Elasticsearch/Role/CxnPool/Sniff.pm 22
lib/Search/Elasticsearch/Role/CxnPool/Static/NoPing.pm 22
lib/Search/Elasticsearch/Role/CxnPool/Static.pm 22
lib/Search/Elasticsearch/Role/CxnPool.pm 22
lib/Search/Elasticsearch/Role/Is_Sync.pm 22
lib/Search/Elasticsearch/Role/Logger.pm 22
lib/Search/Elasticsearch/Role/Scroll.pm 1917
lib/Search/Elasticsearch/Role/Serializer/JSON.pm 22
lib/Search/Elasticsearch/Role/Serializer.pm 22
lib/Search/Elasticsearch/Role/Transport.pm 22
lib/Search/Elasticsearch/Scroll.pm 3037
lib/Search/Elasticsearch/Serializer/JSON/Cpanel.pm 22
lib/Search/Elasticsearch/Serializer/JSON/PP.pm 22
lib/Search/Elasticsearch/Serializer/JSON/XS.pm 22
lib/Search/Elasticsearch/Serializer/JSON.pm 22
lib/Search/Elasticsearch/TestServer.pm 22
lib/Search/Elasticsearch/Transport.pm 22
lib/Search/Elasticsearch/Util/API/Path.pm 22
lib/Search/Elasticsearch/Util/API/QS.pm 68
lib/Search/Elasticsearch/Util.pm 22
lib/Search/Elasticsearch.pm 22
t/60_Cxn/40_fork_httptiny.t 05
t/60_Cxn/41_fork_lwp.t 05
t/60_Cxn/42_fork_hijk.t 05
t/60_Cxn/43_fork_netcurl.t 05
t/70_Helper/50_scroll.t 33
t/lib/es_sync.pl 13
t/lib/es_sync_fork.pl 042
t/release-no-tabs.t 742
t/release-pod-syntax.t 13
62 files changed (This is a version diff) 293352
@@ -1,5 +1,22 @@
 Revision history for Search::Elasticsearch
 
+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()
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.015.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.012.
 Changes
 LICENSE
 MANIFEST
@@ -110,6 +110,10 @@ t/50_Cxn_Pool/70_live.t
 t/60_Cxn/10_basic.t
 t/60_Cxn/20_process_response.t
 t/60_Cxn/30_http.t
+t/60_Cxn/40_fork_httptiny.t
+t/60_Cxn/41_fork_lwp.t
+t/60_Cxn/42_fork_hijk.t
+t/60_Cxn/43_fork_netcurl.t
 t/70_Helper/10_bulk_add_action.t
 t/70_Helper/20_bulk_helpers.t
 t/70_Helper/30_bulk_flush.t
@@ -121,6 +125,7 @@ t/lib/LogCallback.pl
 t/lib/MockCxn.pm
 t/lib/default_cxn.pl
 t/lib/es_sync.pl
+t/lib/es_sync_fork.pl
 t/lib/index_test_data.pl
 t/release-eol.t
 t/release-no-tabs.t
@@ -4,7 +4,7 @@
       "Clinton Gormley <drtech@cpan.org>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.140640",
+   "generated_by" : "Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380",
    "license" : [
       "apache_2_0"
    ],
@@ -97,6 +97,6 @@
          "web" : "https://github.com/elasticsearch/elasticsearch-perl"
       }
    },
-   "version" : "1.12"
+   "version" : "1.13"
 }
 
@@ -11,7 +11,7 @@ build_requires:
 configure_requires:
   ExtUtils::MakeMaker: '6.30'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.140640'
+generated_by: 'Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380'
 license: apache
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -55,4 +55,4 @@ requires:
 resources:
   bugtracker: https://github.com/elasticsearch/elasticsearch-perl/issues
   repository: git://github.com/elasticsearch/elasticsearch-perl.git
-version: '1.12'
+version: '1.13'
@@ -1,5 +1,5 @@
 
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.015.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.012.
 use strict;
 use warnings;
 
@@ -63,7 +63,7 @@ my %WriteMakefileArgs = (
     "Test::More" => "0.98",
     "lib" => 0
   },
-  "VERSION" => "1.12",
+  "VERSION" => "1.13",
   "test" => {
     "TESTS" => "t/*.t t/10_Basic/*.t t/20_Serializer/*.t t/30_Logger/*.t t/40_Transport/*.t t/50_Cxn_Pool/*.t t/60_Cxn/*.t t/70_Helper/*.t t/90_Client_Spec/*.t"
   }
@@ -2,7 +2,7 @@ NAME
     Search::Elasticsearch - The official client for Elasticsearch
 
 VERSION
-    version 1.12
+    version 1.13
 
 SYNOPSIS
         use Search::Elasticsearch;
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Bulk;
-$Search::Elasticsearch::Bulk::VERSION = '1.12';
+$Search::Elasticsearch::Bulk::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::Bulk',
     'Search::Elasticsearch::Role::Is_Sync';
@@ -107,7 +107,7 @@ Search::Elasticsearch::Bulk - A helper module for the Bulk API and for reindexin
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::0_90::Direct::Cluster;
-$Search::Elasticsearch::Client::0_90::Direct::Cluster::VERSION = '1.12';
+$Search::Elasticsearch::Client::0_90::Direct::Cluster::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API::0_90';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -17,7 +17,7 @@ Search::Elasticsearch::Client::0_90::Direct::Cluster - A client for running clus
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::0_90::Direct::Indices;
-$Search::Elasticsearch::Client::0_90::Direct::Indices::VERSION = '1.12';
+$Search::Elasticsearch::Client::0_90::Direct::Indices::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API::0_90';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -17,7 +17,7 @@ Search::Elasticsearch::Client::0_90::Direct::Indices - A client for running inde
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::0_90::Direct;
-$Search::Elasticsearch::Client::0_90::Direct::VERSION = '1.12';
+$Search::Elasticsearch::Client::0_90::Direct::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API::0_90';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -43,6 +43,15 @@ sub _index {
 }
 
 #===================================
+around 'clear_scroll' => sub {
+#===================================
+    my $orig = shift;
+    my ( $self, $params ) = parse_params(@_);
+    $params->{scroll_id}||=delete $params->{body};
+    $orig->( $self, $params );
+};
+
+#===================================
 sub _build__bulk_class {
 #===================================
     my $self = shift;
@@ -110,7 +119,7 @@ Search::Elasticsearch::Client::0_90::Direct - Thin client with full support for
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct::Cat;
-$Search::Elasticsearch::Client::Direct::Cat::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::Cat::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -28,7 +28,7 @@ Search::Elasticsearch::Client::Direct::Cat - A client for running cat debugging
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -133,6 +133,26 @@ Query string parameters:
 See the L<cat count docs|http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cat-count.html>
 for more information.
 
+=head2 C<fielddata()>
+
+    say $e->cat->fielddata(
+        fields => 'field' | \@fields    # optional
+    );
+
+Shows the amount of memory used by each of the specified `fields` (or all
+fields) loaded into fielddata.
+
+Query string parameters:
+    C<bytes>,
+    C<h>,
+    C<help>,
+    C<local>,
+    C<master_timeout>,
+    C<v>
+
+See the L<cat fielddata docs|http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cat-fielddata.html>
+for more information.
+
 =head2 C<health()>
 
     say $e->cat->health();
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct::Cluster;
-$Search::Elasticsearch::Client::Direct::Cluster::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::Cluster::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -29,7 +29,7 @@ Search::Elasticsearch::Client::Direct::Cluster - A client for running cluster-le
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -138,7 +138,6 @@ parameter.
 
 Query string parameters:
     C<flat_settings>,
-    <index_templates>,
     C<local>,
     C<master_timeout>
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct::Indices;
-$Search::Elasticsearch::Client::Direct::Indices::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::Indices::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -17,7 +17,7 @@ Search::Elasticsearch::Client::Direct::Indices - A client for running index-leve
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -515,6 +515,7 @@ for more information.
 The C<put_template()> method is used to create or update index templates.
 
 Query string parameters:
+    C<create>,
     C<flat_settings>,
     C<master_timeout>,
     C<order>,
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct::Nodes;
-$Search::Elasticsearch::Client::Direct::Nodes::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::Nodes::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -17,7 +17,7 @@ Search::Elasticsearch::Client::Direct::Nodes - A client for running node-level r
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct::Snapshot;
-$Search::Elasticsearch::Client::Direct::Snapshot::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::Snapshot::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -17,7 +17,7 @@ Search::Elasticsearch::Client::Direct::Snapshot - A client for managing snapshot
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Client::Direct;
-$Search::Elasticsearch::Client::Direct::VERSION = '1.12';
+$Search::Elasticsearch::Client::Direct::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::API';
 with 'Search::Elasticsearch::Role::Client::Direct';
@@ -116,7 +116,7 @@ Search::Elasticsearch::Client::Direct - Thin client with full support for Elasti
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -889,7 +889,6 @@ Query string parameters:
     C<fields>,
     C<from>,
     C<ignore_unavailable>,
-    C<indices_boost>,
     C<lenient>,
     C<lowercase_expanded_terms>,
     C<preference>,
@@ -906,6 +905,7 @@ Query string parameters:
     C<suggest_size>,
     C<suggest_text>,
     C<timeout>,
+    C<track_scores>,
     C<version>
 
 See the L<search reference|http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-body.html>
@@ -1167,6 +1167,7 @@ Query string parameters:
     C<allow_no_indices>,
     C<expand_wildcards>,
     C<ignore_unavailable>,
+    C<percolate_format>,
     C<percolate_index>,
     C<percolate_type>,
     C<preference>,
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Cxn::Factory;
-$Search::Elasticsearch::Cxn::Factory::VERSION = '1.12';
+$Search::Elasticsearch::Cxn::Factory::VERSION = '1.13';
 use Moo;
 use Search::Elasticsearch::Util qw(parse_params load_plugin);
 use namespace::clean;
@@ -48,7 +48,7 @@ Search::Elasticsearch::Cxn::Factory - Used by CxnPools to create new Cxn instanc
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Cxn::HTTPTiny;
-$Search::Elasticsearch::Cxn::HTTPTiny::VERSION = '1.12';
+$Search::Elasticsearch::Cxn::HTTPTiny::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::Cxn::HTTP',
     'Search::Elasticsearch::Role::Cxn',
@@ -83,7 +83,7 @@ Search::Elasticsearch::Cxn::HTTPTiny - A Cxn implementation which uses HTTP::Tin
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Cxn::Hijk;
-$Search::Elasticsearch::Cxn::Hijk::VERSION = '1.12';
+$Search::Elasticsearch::Cxn::Hijk::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::Cxn::HTTP',
     'Search::Elasticsearch::Role::Cxn',
@@ -10,7 +10,7 @@ use Try::Tiny;
 use namespace::clean;
 
 has 'connect_timeout' => ( is => 'ro', default => 2 );
-has '_socket_cache' => ( is => 'ro', default => sub { {} } );
+has '_socket_cache' => ( is => 'rw', default => sub { {} } );
 
 my $Cxn_Error = qr/ Connection.(?:timed.out|re(?:set|fused))
                        | connect:.timeout
@@ -74,6 +74,12 @@ sub perform_request {
 }
 
 #===================================
+sub clear_handle {
+#===================================
+    my $self = shift;
+    $self->_socket_cache( {} );
+}
+#===================================
 sub error_from_text {
 #===================================
     local $_ = $_[2];
@@ -108,7 +114,7 @@ Search::Elasticsearch::Cxn::Hijk - A Cxn implementation which uses Hijk
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Cxn::LWP;
-$Search::Elasticsearch::Cxn::LWP::VERSION = '1.12';
+$Search::Elasticsearch::Cxn::LWP::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::Cxn::HTTP',
     'Search::Elasticsearch::Role::Cxn',
@@ -91,7 +91,7 @@ Search::Elasticsearch::Cxn::LWP - A Cxn implementation which uses LWP
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::CxnPool::Sniff;
-$Search::Elasticsearch::CxnPool::Sniff::VERSION = '1.12';
+$Search::Elasticsearch::CxnPool::Sniff::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::CxnPool::Sniff',
     'Search::Elasticsearch::Role::Is_Sync';
@@ -81,7 +81,7 @@ Search::Elasticsearch::CxnPool::Sniff - A CxnPool for connecting to a local clus
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::CxnPool::Static::NoPing;
-$Search::Elasticsearch::CxnPool::Static::NoPing::VERSION = '1.12';
+$Search::Elasticsearch::CxnPool::Static::NoPing::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::CxnPool::Static::NoPing',
     'Search::Elasticsearch::Role::Is_Sync';
@@ -18,7 +18,7 @@ Search::Elasticsearch::CxnPool::Static::NoPing - A CxnPool for connecting to a r
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::CxnPool::Static;
-$Search::Elasticsearch::CxnPool::Static::VERSION = '1.12';
+$Search::Elasticsearch::CxnPool::Static::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::CxnPool::Static',
     'Search::Elasticsearch::Role::Is_Sync';
@@ -50,7 +50,7 @@ Search::Elasticsearch::CxnPool::Static - A CxnPool for connecting to a remote cl
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Error;
-$Search::Elasticsearch::Error::VERSION = '1.12';
+$Search::Elasticsearch::Error::VERSION = '1.13';
 use Moo;
 
 our $DEBUG = 0;
@@ -158,7 +158,7 @@ Search::Elasticsearch::Error - Errors thrown by Search::Elasticsearch
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Logger::LogAny;
-$Search::Elasticsearch::Logger::LogAny::VERSION = '1.12';
+$Search::Elasticsearch::Logger::LogAny::VERSION = '1.13';
 use Moo;
 with 'Search::Elasticsearch::Role::Logger';
 use Search::Elasticsearch::Util qw(parse_params to_list);
@@ -44,7 +44,7 @@ Search::Elasticsearch::Logger::LogAny - A Log::Any-based Logger implementation
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::API::0_90;
-$Search::Elasticsearch::Role::API::0_90::VERSION = '1.12';
+$Search::Elasticsearch::Role::API::0_90::VERSION = '1.13';
 use Moo::Role;
 
 use Search::Elasticsearch::Util qw(throw);
@@ -310,21 +310,20 @@ sub api {
             [ {}, "_search" ],
         ],
         qs => [
-            "_source",         "_source_exclude",
-            "_source_include", "analyze_wildcard",
-            "analyzer",        "default_operator",
-            "df",              "explain",
-            "fields",          "from",
-            "ignore_indices",  "indices_boost",
-            "lenient",         "lowercase_expanded_terms",
-            "preference",      "q",
-            "routing",         "scroll",
-            "search_type",     "size",
-            "sort",            "source",
-            "stats",           "suggest_field",
-            "suggest_mode",    "suggest_size",
-            "suggest_text",    "timeout",
-            "version",
+            "_source",                  "_source_exclude",
+            "_source_include",          "analyze_wildcard",
+            "analyzer",                 "default_operator",
+            "df",                       "explain",
+            "fields",                   "from",
+            "ignore_indices",           "lenient",
+            "lowercase_expanded_terms", "preference",
+            "q",                        "routing",
+            "scroll",                   "search_type",
+            "size",                     "sort",
+            "source",                   "stats",
+            "suggest_field",            "suggest_mode",
+            "suggest_size",             "suggest_text",
+            "timeout",                  "version",
         ],
     },
 
@@ -953,7 +952,7 @@ Search::Elasticsearch::Role::API::0_90 - This class contains the spec for the El
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::API;
-$Search::Elasticsearch::Role::API::VERSION = '1.12';
+$Search::Elasticsearch::Role::API::VERSION = '1.13';
 use Moo::Role;
 
 use Search::Elasticsearch::Util qw(throw);
@@ -392,10 +392,10 @@ sub api {
         ],
         qs => [
             "allow_no_indices",   "expand_wildcards",
-            "ignore_unavailable", "percolate_index",
-            "percolate_type",     "preference",
-            "routing",            "version",
-            "version_type",
+            "ignore_unavailable", "percolate_format",
+            "percolate_index",    "percolate_type",
+            "preference",         "routing",
+            "version",            "version_type",
         ],
     },
 
@@ -429,21 +429,21 @@ sub api {
             [ {}, "_search" ],
         ],
         qs => [
-            "_source",            "_source_exclude",
-            "_source_include",    "allow_no_indices",
-            "analyze_wildcard",   "analyzer",
-            "default_operator",   "df",
-            "expand_wildcards",   "explain",
-            "fields",             "from",
-            "ignore_unavailable", "indices_boost",
-            "lenient",            "lowercase_expanded_terms",
-            "preference",         "q",
-            "routing",            "scroll",
-            "search_type",        "size",
-            "sort",               "source",
-            "stats",              "suggest_field",
-            "suggest_mode",       "suggest_size",
-            "suggest_text",       "timeout",
+            "_source",                  "_source_exclude",
+            "_source_include",          "allow_no_indices",
+            "analyze_wildcard",         "analyzer",
+            "default_operator",         "df",
+            "expand_wildcards",         "explain",
+            "fields",                   "from",
+            "ignore_unavailable",       "lenient",
+            "lowercase_expanded_terms", "preference",
+            "q",                        "routing",
+            "scroll",                   "search_type",
+            "size",                     "sort",
+            "source",                   "stats",
+            "suggest_field",            "suggest_mode",
+            "suggest_size",             "suggest_text",
+            "timeout",                  "track_scores",
             "version",
         ],
     },
@@ -579,6 +579,16 @@ sub api {
         qs => [ "h", "help", "local", "master_timeout", "v" ],
     },
 
+    'cat.fielddata' => {
+        doc   => "cat-fielddata",
+        parts => { fields => { multi => 1 } },
+        paths => [
+            [ { fields => 2 }, "_cat", "fielddata", "{fields}" ],
+            [ {}, "_cat", "fielddata" ],
+        ],
+        qs => [ "bytes", "h", "help", "local", "master_timeout", "v" ],
+    },
+
     'cat.health' => {
         doc   => "cat-health",
         parts => {},
@@ -1098,7 +1108,11 @@ sub api {
         method => "PUT",
         parts => { name => { required => 1 } },
         paths => [ [ { name => 1 }, "_template", "{name}" ] ],
-        qs => [ "flat_settings", "master_timeout", "order", "timeout" ],
+        qs => [
+            "create",         "flat_settings",
+            "master_timeout", "order",
+            "timeout"
+        ],
     },
 
     'indices.put_warmer' => {
@@ -1162,18 +1176,6 @@ sub api {
         ],
     },
 
-    'indices.snapshot_index' => {
-        doc    => "indices-gateway-snapshot",
-        method => "POST",
-        parts  => { index => { multi => 1 } },
-        paths  => [
-            [ { index => 0 }, "{index}", "_gateway", "snapshot" ],
-            [ {}, "_gateway", "snapshot" ],
-        ],
-        qs =>
-            [ "allow_no_indices", "expand_wildcards", "ignore_unavailable" ],
-    },
-
     'indices.stats' => {
         doc   => "indices-stats",
         parts => { index => { multi => 1 }, metric => { multi => 1 } },
@@ -1191,18 +1193,6 @@ sub api {
         ],
     },
 
-    'indices.status' => {
-        doc   => "indices-status",
-        parts => { index => { multi => 1 } },
-        paths =>
-            [ [ { index => 0 }, "{index}", "_status" ], [ {}, "_status" ] ],
-        qs => [
-            "allow_no_indices", "expand_wildcards",
-            "human",            "ignore_unavailable",
-            "recovery",         "snapshot",
-        ],
-    },
-
     'indices.update_aliases' => {
         body   => { required => 1 },
         doc    => "indices-aliases",
@@ -1435,7 +1425,7 @@ Search::Elasticsearch::Role::API - This class contains the spec for the Elastics
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Bulk;
-$Search::Elasticsearch::Role::Bulk::VERSION = '1.12';
+$Search::Elasticsearch::Role::Bulk::VERSION = '1.13';
 use Moo::Role;
 requires 'add_action', 'flush';
 
@@ -255,7 +255,7 @@ Search::Elasticsearch::Role::Bulk - Provides common functionality to L<Elasticse
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Client::Direct;
-$Search::Elasticsearch::Role::Client::Direct::VERSION = '1.12';
+$Search::Elasticsearch::Role::Client::Direct::VERSION = '1.13';
 use Moo::Role;
 with 'Search::Elasticsearch::Role::Client';
 use Search::Elasticsearch::Util::API::Path qw(path_handler);
@@ -119,7 +119,7 @@ Search::Elasticsearch::Role::Client::Direct - Request parsing for Direct clients
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Client;
-$Search::Elasticsearch::Role::Client::VERSION = '1.12';
+$Search::Elasticsearch::Role::Client::VERSION = '1.13';
 use Moo::Role;
 use namespace::clean;
 
@@ -28,7 +28,7 @@ Search::Elasticsearch::Role::Client - Provides common functionality for Client i
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Cxn::HTTP;
-$Search::Elasticsearch::Role::Cxn::HTTP::VERSION = '1.12';
+$Search::Elasticsearch::Role::Cxn::HTTP::VERSION = '1.13';
 use Moo::Role;
 
 use URI();
@@ -11,7 +11,8 @@ has 'is_https'           => ( is => 'ro' );
 has 'userinfo'           => ( is => 'ro' );
 has 'max_content_length' => ( is => 'ro' );
 has 'default_headers'    => ( is => 'ro' );
-has 'handle'             => ( is => 'lazy' );
+has 'handle'             => ( is => 'lazy', clearer => 1 );
+has '_pid'               => ( is => 'rw', default => $$ );
 
 #===================================
 sub protocol     {'http'}
@@ -109,6 +110,16 @@ before 'perform_request' => sub {
 };
 
 #===================================
+before 'handle' => sub {
+#===================================
+    my $self = shift;
+    if ( $$ != $self->_pid ) {
+        $self->clear_handle;
+        $self->_pid($$);
+    }
+};
+
+#===================================
 around 'process_response' => sub {
 #===================================
     my ( $orig, $self, $params, $code, $msg, $body, $headers ) = @_;
@@ -155,7 +166,7 @@ Search::Elasticsearch::Role::Cxn::HTTP - Provides common functionality to HTTP C
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Cxn;
-$Search::Elasticsearch::Role::Cxn::VERSION = '1.12';
+$Search::Elasticsearch::Role::Cxn::VERSION = '1.13';
 use Moo::Role;
 use Search::Elasticsearch::Util qw(throw);
 use List::Util qw(min);
@@ -183,7 +183,7 @@ Search::Elasticsearch::Role::Cxn - Provides common functionality to Cxn implemen
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::CxnPool::Sniff;
-$Search::Elasticsearch::Role::CxnPool::Sniff::VERSION = '1.12';
+$Search::Elasticsearch::Role::CxnPool::Sniff::VERSION = '1.13';
 use Moo::Role;
 with 'Search::Elasticsearch::Role::CxnPool';
 requires 'next_cxn', 'sniff';
@@ -88,7 +88,7 @@ Search::Elasticsearch::Role::CxnPool::Sniff - A CxnPool role for connecting to a
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 CONFIGURATION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::CxnPool::Static::NoPing;
-$Search::Elasticsearch::Role::CxnPool::Static::NoPing::VERSION = '1.12';
+$Search::Elasticsearch::Role::CxnPool::Static::NoPing::VERSION = '1.13';
 use Moo::Role;
 with 'Search::Elasticsearch::Role::CxnPool';
 
@@ -79,7 +79,7 @@ Search::Elasticsearch::Role::CxnPool::Static::NoPing - A CxnPool for connecting
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::CxnPool::Static;
-$Search::Elasticsearch::Role::CxnPool::Static::VERSION = '1.12';
+$Search::Elasticsearch::Role::CxnPool::Static::VERSION = '1.13';
 use Moo::Role;
 with 'Search::Elasticsearch::Role::CxnPool';
 requires 'next_cxn';
@@ -39,7 +39,7 @@ Search::Elasticsearch::Role::CxnPool::Static - A CxnPool role for connecting to
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 METHODS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::CxnPool;
-$Search::Elasticsearch::Role::CxnPool::VERSION = '1.12';
+$Search::Elasticsearch::Role::CxnPool::VERSION = '1.13';
 use Moo::Role;
 use Search::Elasticsearch::Util qw(parse_params);
 use List::Util qw(shuffle);
@@ -134,7 +134,7 @@ Search::Elasticsearch::Role::CxnPool - Provides common functionality to the CxnP
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Is_Sync;
-$Search::Elasticsearch::Role::Is_Sync::VERSION = '1.12';
+$Search::Elasticsearch::Role::Is_Sync::VERSION = '1.13';
 use Moo::Role;
 use namespace::clean;
 
@@ -19,7 +19,7 @@ Search::Elasticsearch::Role::Is_Sync - A role to mark classes which should be us
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Logger;
-$Search::Elasticsearch::Role::Logger::VERSION = '1.12';
+$Search::Elasticsearch::Role::Logger::VERSION = '1.13';
 use Moo::Role;
 
 use URI();
@@ -139,7 +139,7 @@ Search::Elasticsearch::Role::Logger - Provides common functionality to Logger im
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Scroll;
-$Search::Elasticsearch::Role::Scroll::VERSION = '1.12';
+$Search::Elasticsearch::Role::Scroll::VERSION = '1.13';
 use Moo::Role;
 requires '_clear_scroll';
 use Search::Elasticsearch::Util qw(parse_params throw);
@@ -7,18 +7,18 @@ use Scalar::Util qw(weaken blessed);
 use namespace::clean;
 
 has 'es' => ( is => 'ro', required => 1 );
-has 'scroll'         => ( is => 'ro' );
-has 'scroll_in_body' => ( is => 'ro' );
-has 'total'          => ( is => 'rwp' );
-has 'max_score'      => ( is => 'rwp' );
-has 'facets'         => ( is => 'rwp' );
-has 'aggregations'   => ( is => 'rwp' );
-has 'suggest'        => ( is => 'rwp' );
-has 'took'           => ( is => 'rwp' );
-has 'total_took'     => ( is => 'rwp' );
-has 'search_params'  => ( is => 'ro' );
-has 'is_finished'    => ( is => 'rwp', default => '' );
-has '_scroll_id'     => ( is => 'rwp', clearer => 1, predicate => 1 );
+has 'scroll'        => ( is => 'ro' );
+has 'scroll_in_qs'  => ( is => 'ro' );
+has 'total'         => ( is => 'rwp' );
+has 'max_score'     => ( is => 'rwp' );
+has 'facets'        => ( is => 'rwp' );
+has 'aggregations'  => ( is => 'rwp' );
+has 'suggest'       => ( is => 'rwp' );
+has 'took'          => ( is => 'rwp' );
+has 'total_took'    => ( is => 'rwp' );
+has 'search_params' => ( is => 'ro' );
+has 'is_finished'   => ( is => 'rwp', default => '' );
+has '_scroll_id'    => ( is => 'rwp', clearer => 1, predicate => 1 );
 
 #===================================
 sub finish {
@@ -29,18 +29,16 @@ sub finish {
     $self->_clear_scroll;
 }
 
-
-
 #===================================
 sub scroll_request {
 #===================================
     my $self = shift;
     my %args = ( scroll => $self->scroll );
-    if ( $self->scroll_in_body ) {
-        $args{body} = $self->_scroll_id;
+    if ( $self->scroll_in_qs ) {
+        $args{scroll_id} = $self->_scroll_id;
     }
     else {
-        $args{scroll_id} = $self->_scroll_id;
+        $args{body} = $self->_scroll_id;
     }
     $self->es->scroll(%args);
 }
@@ -68,7 +66,7 @@ Search::Elasticsearch::Role::Scroll - Provides common functionality to L<Elastic
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Serializer::JSON;
-$Search::Elasticsearch::Role::Serializer::JSON::VERSION = '1.12';
+$Search::Elasticsearch::Role::Serializer::JSON::VERSION = '1.13';
 use Moo::Role;
 requires 'JSON';
 
@@ -103,7 +103,7 @@ Search::Elasticsearch::Role::Serializer::JSON - A Serializer role for JSON modul
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Serializer;
-$Search::Elasticsearch::Role::Serializer::VERSION = '1.12';
+$Search::Elasticsearch::Role::Serializer::VERSION = '1.13';
 use Moo::Role;
 
 requires qw(encode decode encode_pretty encode_bulk mime_type);
@@ -20,7 +20,7 @@ Search::Elasticsearch::Role::Serializer - An interface for Serializer modules
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Role::Transport;
-$Search::Elasticsearch::Role::Transport::VERSION = '1.12';
+$Search::Elasticsearch::Role::Transport::VERSION = '1.13';
 use Moo::Role;
 
 requires qw(perform_request);
@@ -72,7 +72,7 @@ Search::Elasticsearch::Role::Transport - Transport role providing interface betw
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -1,7 +1,7 @@
 package Search::Elasticsearch::Scroll;
-$Search::Elasticsearch::Scroll::VERSION = '1.12';
+$Search::Elasticsearch::Scroll::VERSION = '1.13';
 use Moo;
-use Search::Elasticsearch::Util qw(parse_params);
+use Search::Elasticsearch::Util qw(parse_params throw);
 use namespace::clean;
 
 has '_buffer' => ( is => 'ro' );
@@ -13,25 +13,30 @@ with 'Search::Elasticsearch::Role::Is_Sync',
 sub BUILDARGS {
 #===================================
     my ( $class, $params ) = parse_params(@_);
-    my $es             = delete $params->{es};
-    my $scroll         = $params->{scroll} ||= '1m';
-    my $scroll_in_body = delete $params->{scroll_in_body};
-    my $results        = $es->search($params);
+    my $es = delete $params->{es};
+    my $scroll = $params->{scroll} ||= '1m';
+
+    throw( 'Param',
+        'The (scroll_in_body) parameter has been replaced by (scroll_in_qs)' )
+        if exists $params->{scroll_in_body};
+
+    my $scroll_in_qs = delete $params->{scroll_in_qs};
+    my $results      = $es->search($params);
 
     my $total = $results->{hits}{total};
 
     return {
-        es             => $es,
-        scroll         => $scroll,
-        scroll_in_body => $scroll_in_body,
-        aggregations   => $results->{aggregations},
-        facets         => $results->{facets},
-        suggest        => $results->{suggest},
-        took           => $results->{took},
-        total_took     => $results->{took},
-        total          => $total,
-        max_score      => $results->{hits}{max_score},
-        _buffer        => $results->{hits}{hits},
+        es           => $es,
+        scroll       => $scroll,
+        scroll_in_qs => $scroll_in_qs,
+        aggregations => $results->{aggregations},
+        facets       => $results->{facets},
+        suggest      => $results->{suggest},
+        took         => $results->{took},
+        total_took   => $results->{took},
+        total        => $total,
+        max_score    => $results->{hits}{max_score},
+        _buffer      => $results->{hits}{hits},
         $total
         ? ( _scroll_id => $results->{_scroll_id} )
         : ( is_finished => 1 )
@@ -105,9 +110,10 @@ sub _clear_scroll {
     my $scroll_id = $self->_scroll_id or return;
     $self->_clear_scroll_id;
 
-    my %args = $self->scroll_in_body
-        ? ( body => $scroll_id )
-        : ( scroll_id => $scroll_id );
+    my %args
+        = $self->scroll_in_qs
+        ? ( scroll_id => $scroll_id )
+        : ( body => $scroll_id );
     eval { $self->es->clear_scroll(%args) };
 }
 
@@ -123,7 +129,7 @@ Search::Elasticsearch::Scroll - A helper module for scrolled searches
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -274,7 +280,7 @@ are memory constrained, you will need to take this into account.
     my $es = Search::Elasticsearch->new(...);
     my $scroll = $es->scroll_helper(
         scroll         => '1m',            # optional
-        scroll_in_body => 0|1,             # optional
+        scroll_in_qs   => 0|1,             # optional
         %search_params
     );
 
@@ -283,7 +289,7 @@ L<Search::Elasticsearch::Scroll> class and calls L</new()>,
 passing in any arguments.
 
 You can specify a C<scroll> duration (which defaults to C<"1m">) and
-C<scroll_in_body> (which defaults to C<false>). Any other parameters are
+C<scroll_in_qs> (which defaults to C<false>). Any other parameters are
 passed directly to L<Search::Elasticsearch::Client::Direct/search()>.
 
 The C<scroll> duration tells Elasticearch how long it should keep the scroll
@@ -292,13 +298,14 @@ all results, just long enough to process a single B<batch> of results.
 The expiry gets renewed for another C<scroll> period every time new
 a new batch of results is retrieved from the cluster.
 
-By default, the C<scroll_id> is passed in the
-L<scroll|Search::Elasticsearch::Client::Direct/scroll()> request as part
-of the query string. When querying very many indices, the scroll ID can become
-too long for intervening proxies.  To send it in the request body instead,
-set C<scroll_in_body> to a true value.  To send it in the request body
-as a C<POST> request, also set
-L<send_get_body_as|Search::Elasticsearch::Transport/send_get_body_as> to
+By default, the C<scroll_id> is passed as the C<body> to the
+L<scroll|Search::Elasticsearch::Client::Direct/scroll()> request.
+To send it in the query string instead, set C<scroll_in_qs> to a true value,
+but be aware: when querying very many indices, the scroll ID can become
+too long for intervening proxies.
+
+The C<scroll> request uses C<GET> by default.  To use C<POST> instead,
+set L<send_get_body_as|Search::Elasticsearch::Transport/send_get_body_as> to
 C<POST>.
 
 =head2 C<next()>
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Serializer::JSON::Cpanel;
-$Search::Elasticsearch::Serializer::JSON::Cpanel::VERSION = '1.12';
+$Search::Elasticsearch::Serializer::JSON::Cpanel::VERSION = '1.13';
 use Cpanel::JSON::XS;
 use Moo;
 
@@ -20,7 +20,7 @@ Search::Elasticsearch::Serializer::JSON::Cpanel - A JSON Serializer using Cpanel
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Serializer::JSON::PP;
-$Search::Elasticsearch::Serializer::JSON::PP::VERSION = '1.12';
+$Search::Elasticsearch::Serializer::JSON::PP::VERSION = '1.13';
 use Moo;
 use JSON::PP;
 
@@ -23,7 +23,7 @@ Search::Elasticsearch::Serializer::JSON::PP - A JSON Serializer using JSON::PP
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Serializer::JSON::XS;
-$Search::Elasticsearch::Serializer::JSON::XS::VERSION = '1.12';
+$Search::Elasticsearch::Serializer::JSON::XS::VERSION = '1.13';
 use Moo;
 use JSON::XS;
 
@@ -19,7 +19,7 @@ Search::Elasticsearch::Serializer::JSON::XS - A JSON Serializer using JSON::XS
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Serializer::JSON;
-$Search::Elasticsearch::Serializer::JSON::VERSION = '1.12';
+$Search::Elasticsearch::Serializer::JSON::VERSION = '1.13';
 use Moo;
 use JSON::MaybeXS 1.002002 ();
 
@@ -24,7 +24,7 @@ Search::Elasticsearch::Serializer::JSON - The default JSON Serializer, using JSO
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::TestServer;
-$Search::Elasticsearch::TestServer::VERSION = '1.12';
+$Search::Elasticsearch::TestServer::VERSION = '1.13';
 use Moo;
 use Search::Elasticsearch();
 use POSIX 'setsid';
@@ -174,7 +174,7 @@ Search::Elasticsearch::TestServer - A helper class to launch Elasticsearch nodes
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Transport;
-$Search::Elasticsearch::Transport::VERSION = '1.12';
+$Search::Elasticsearch::Transport::VERSION = '1.13';
 use Moo;
 
 use URI();
@@ -73,7 +73,7 @@ Search::Elasticsearch::Transport - Provides interface between the client class a
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Util::API::Path;
-$Search::Elasticsearch::Util::API::Path::VERSION = '1.12';
+$Search::Elasticsearch::Util::API::Path::VERSION = '1.13';
 use strict;
 use warnings;
 use Any::URI::Escape qw(uri_escape);
@@ -66,7 +66,7 @@ Search::Elasticsearch::Util::API::Path - A utility class for converting path tem
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Util::API::QS;
-$Search::Elasticsearch::Util::API::QS::VERSION = '1.12';
+$Search::Elasticsearch::Util::API::QS::VERSION = '1.13';
 use strict;
 use warnings;
 
@@ -27,14 +27,15 @@ our %Params = (
     analyzer         => { type => 'string' },
     boost_terms      => { type => 'number' },
     bytes            => { type => 'enum', options => [ 'b', 'k', 'm', 'g' ] },
-    char_filters      => { type => 'list' },
-    clear             => { type => 'bool' },
-    completion        => { type => 'bool' },
+    char_filters     => { type => 'list' },
+    clear            => { type => 'bool' },
+    completion       => { type => 'bool' },
     completion_fields => { type => 'list' },
     consistency       => {
         options => [ 'one', 'quorum', 'all' ],
         type    => 'enum'
     },
+    create           => { type => 'bool' },
     default_operator => {
         default => 'OR',
         options => [ 'AND', 'OR' ],
@@ -97,7 +98,6 @@ our %Params = (
     index_templates    => { type => 'list' },
     indexing           => { type => 'bool' },
     indices            => { type => 'bool' },
-    indices_boost      => { type => 'list' },
     interval           => { type => 'duration' },
     jvm                => { type => 'bool' },
     lang               => { type => 'string' },
@@ -136,6 +136,7 @@ our %Params = (
     payloads               => { type => 'bool' },
     percent_terms_to_match => { type => 'number' },
     percolate              => { type => 'string' },
+    percolate_format       => { type => 'string' },
     percolate_index        => { type => 'string' },
     percolate_type         => { type => 'string' },
     plugin                 => { type => 'bool' },
@@ -202,6 +203,7 @@ our %Params = (
     timeout         => { type => 'duration' },
     timestamp       => { type => 'datetime' },
     tokenizer       => { type => 'string' },
+    track_scores    => { type => 'bool' },
     transport       => { type => 'bool' },
     ts              => { type => 'bool' },
     ttl             => { type => 'duration' },
@@ -253,7 +255,7 @@ Search::Elasticsearch::Util::API::QS - A utility class for query string paramete
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 DESCRIPTION
 
@@ -1,5 +1,5 @@
 package Search::Elasticsearch::Util;
-$Search::Elasticsearch::Util::VERSION = '1.12';
+$Search::Elasticsearch::Util::VERSION = '1.13';
 use Moo;
 use Search::Elasticsearch::Error();
 use Scalar::Util qw(blessed);
@@ -119,7 +119,7 @@ Search::Elasticsearch::Util - A utility class for internal use by Search::Elasti
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 AUTHOR
 
@@ -5,7 +5,7 @@ use Moo 1.003;
 use Search::Elasticsearch::Util qw(parse_params load_plugin);
 use namespace::clean;
 
-our $VERSION = '1.12';
+our $VERSION = '1.13';
 
 my %Default_Plugins = (
     client      => [ 'Search::Elasticsearch::Client',       'Direct' ],
@@ -53,7 +53,7 @@ Search::Elasticsearch - The official client for Elasticsearch
 
 =head1 VERSION
 
-version 1.12
+version 1.13
 
 =head1 SYNOPSIS
 
@@ -0,0 +1,5 @@
+use lib 't/lib';
+
+$ENV{ES_CXN} = 'HTTPTiny';
+do "es_sync_fork.pl" or die $!;
+
@@ -0,0 +1,5 @@
+use lib 't/lib';
+
+$ENV{ES_CXN} = 'LWP';
+do "es_sync_fork.pl" or die $!;
+
@@ -0,0 +1,5 @@
+use lib 't/lib';
+
+$ENV{ES_CXN} = 'Hijk';
+do "es_sync_fork.pl" or die $!;
+
@@ -0,0 +1,5 @@
+use lib 't/lib';
+
+$ENV{ES_CXN} = 'NetCurl';
+do "es_sync_fork.pl" or die $!;
+
@@ -83,9 +83,9 @@ SKIP: {
     );
 
     test_scroll(
-        "Scroll in body",
-        {   scroll_in_body => 1,
-            body           => {
+        "Scroll in qs",
+        {   scroll_in_qs => 1,
+            body         => {
                 query   => { term => { color => 'red' } },
                 suggest => {
                     mysuggest =>
@@ -13,6 +13,7 @@ my $api = $version =~ /^0.90/ ? '0_90::Direct' : 'Direct';
 my $body     = $ENV{ES_BODY}     || 'GET';
 my $cxn      = $ENV{ES_CXN}      || do "default_cxn.pl" || die $!;
 my $cxn_pool = $ENV{ES_CXN_POOL} || 'Static';
+my $timeout  = $ENV{ES_TIMEOUT}  || 30;
 
 my $es;
 if ( $ENV{ES} ) {
@@ -22,7 +23,8 @@ if ( $ENV{ES} ) {
         cxn              => $cxn,
         cxn_pool         => $cxn_pool,
         client           => $api,
-        send_get_body_as => $body
+        send_get_body_as => $body,
+        request_timeout  => $timeout
     );
     eval { $es->ping; } or do {
         diag $@;
@@ -0,0 +1,42 @@
+use Test::More;
+use POSIX ":sys_wait_h";
+
+my $es        = do "es_sync.pl";
+my $cxn_class = ref $es->transport->cxn_pool->cxns->[0];
+ok $es->info, "$cxn_class - Info before fork";
+
+my $Kids = 4;
+my %pids;
+
+for my $child ( 1 .. $Kids ) {
+    my $pid = fork();
+    if ($pid) {
+        $pids{$pid} = $child;
+        next;
+    }
+    if ( !defined $pid ) {
+        skip "fork() not supported";
+        done_testing;
+        last;
+    }
+
+    for ( 1 .. 100 ) {
+        $es->info;
+    }
+    exit;
+}
+
+my $ok = 0;
+for ( 1 .. 10 ) {
+    my $pid = waitpid( -1, WNOHANG );
+    if ( $pid > 0 ) {
+        delete $pids{$pid};
+        $ok++ unless $?;
+        redo;
+    }
+    last unless keys %pids;
+    sleep 1;
+}
+
+is $ok, $Kids, "$cxn_class - Fork";
+done_testing;
@@ -9,7 +9,7 @@ BEGIN {
 use strict;
 use warnings;
 
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.07
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.06
 
 use Test::More 0.88;
 use Test::NoTabs;
@@ -61,79 +61,7 @@ my @files = (
     'lib/Search/Elasticsearch/Transport.pm',
     'lib/Search/Elasticsearch/Util.pm',
     'lib/Search/Elasticsearch/Util/API/Path.pm',
-    'lib/Search/Elasticsearch/Util/API/QS.pm',
-    't/10_Basic/10_load.t',
-    't/20_Serializer/10_load_cpanel.t',
-    't/20_Serializer/11_load_xs.t',
-    't/20_Serializer/12_load_pp.t',
-    't/20_Serializer/13_preload_cpanel.t',
-    't/20_Serializer/14_preload_xs.t',
-    't/20_Serializer/20_xs_encode_decode.t',
-    't/20_Serializer/21_xs_encode_bulk.t',
-    't/20_Serializer/22_xs_encode_pretty.t',
-    't/20_Serializer/30_cpanel_encode_decode.t',
-    't/20_Serializer/31_cpanel_encode_bulk.t',
-    't/20_Serializer/32_cpanel_encode_pretty.t',
-    't/20_Serializer/40_pp_encode_decode.t',
-    't/20_Serializer/41_pp_encode_bulk.t',
-    't/20_Serializer/42_pp_encode_pretty.t',
-    't/20_Serializer/encode_bulk.pl',
-    't/20_Serializer/encode_decode.pl',
-    't/20_Serializer/encode_pretty.pl',
-    't/30_Logger/10_explicit.t',
-    't/30_Logger/20_implicit.t',
-    't/30_Logger/30_log_methods.t',
-    't/30_Logger/40_trace_request.t',
-    't/30_Logger/50_trace_response.t',
-    't/30_Logger/60_trace_error.t',
-    't/30_Logger/70_trace_comment.t',
-    't/40_Transport/10_tidy_request.t',
-    't/40_Transport/20_send_body_as.t',
-    't/40_Transport/30_perform_request.t',
-    't/50_Cxn_Pool/10_static_normal.t',
-    't/50_Cxn_Pool/11_static_node_missing.t',
-    't/50_Cxn_Pool/12_static_node_fails.t',
-    't/50_Cxn_Pool/13_static_node_timesout.t',
-    't/50_Cxn_Pool/14_static_both_nodes_timeout.t',
-    't/50_Cxn_Pool/15_static_both_nodes_fail.t',
-    't/50_Cxn_Pool/16_static_nodes_starting.t',
-    't/50_Cxn_Pool/17_static_runaway_nodes.t',
-    't/50_Cxn_Pool/30_sniff_normal.t',
-    't/50_Cxn_Pool/31_sniff_new_nodes.t',
-    't/50_Cxn_Pool/32_sniff_node_fails.t',
-    't/50_Cxn_Pool/33_sniff_both_nodes_fail.t',
-    't/50_Cxn_Pool/34_sniff_node_timeout.t',
-    't/50_Cxn_Pool/35_sniff_both_nodes_timeout.t',
-    't/50_Cxn_Pool/36_sniff_nodes_starting.t',
-    't/50_Cxn_Pool/37_sniff_runaway_nodes.t',
-    't/50_Cxn_Pool/38_bad_sniff.t',
-    't/50_Cxn_Pool/39_sniff_max_content.t',
-    't/50_Cxn_Pool/50_noping_normal.t',
-    't/50_Cxn_Pool/51_noping_node_fails.t',
-    't/50_Cxn_Pool/52_noping_node_timesout.t',
-    't/50_Cxn_Pool/53_noping_all_nodes_fail.t',
-    't/50_Cxn_Pool/54_noping_nodes_starting.t',
-    't/50_Cxn_Pool/55_noping_runaway_nodes.t',
-    't/50_Cxn_Pool/56_max_retries.t',
-    't/50_Cxn_Pool/70_live.t',
-    't/60_Cxn/10_basic.t',
-    't/60_Cxn/20_process_response.t',
-    't/60_Cxn/30_http.t',
-    't/70_Helper/10_bulk_add_action.t',
-    't/70_Helper/20_bulk_helpers.t',
-    't/70_Helper/30_bulk_flush.t',
-    't/70_Helper/40_bulk_errors.t',
-    't/70_Helper/50_scroll.t',
-    't/70_Helper/60_reindex.t',
-    't/90_Client_Spec/00_print_version.t',
-    't/lib/LogCallback.pl',
-    't/lib/MockCxn.pm',
-    't/lib/default_cxn.pl',
-    't/lib/es_sync.pl',
-    't/lib/index_test_data.pl',
-    't/release-eol.t',
-    't/release-no-tabs.t',
-    't/release-pod-syntax.t'
+    'lib/Search/Elasticsearch/Util/API/QS.pm'
 );
 
 notabs_ok($_) foreach @files;
@@ -9,6 +9,8 @@ BEGIN {
 
 # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
 use Test::More;
-use Test::Pod 1.41;
+
+eval "use Test::Pod 1.41";
+plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
 
 all_pod_files_ok();