Search::Elasticsearch::Cxn::NetCurl - A Cxn implementation which uses libcurl via Net::Curl
version 2.00
Provides an HTTP Cxn class based on Net::Curl. The NetCurl Cxn class is very fast and uses persistent connections but requires XS and libcurl.
NetCurl
libcurl
This class does Search::Elasticsearch::Role::Cxn::HTTP, whose documentation provides more information.
connect_timeout
Unlike most HTTP backends, Net::Curl accepts a separate connect_timeout parameter, which defaults to 2 seconds but can be reduced in an environment with low network latency.
2
From Search::Elasticsearch::Role::Cxn::HTTP
node
max_content_length
deflate
From Search::Elasticsearch::Role::Cxn
request_timeout
ping_timeout
dead_timeout
max_dead_timeout
sniff_request_timeout
sniff_timeout
handle_args
Search::Elasticsearch::Cxn::NetCurl does no validation of remote hosts by default.
This behaviour can be changed by passing the ssl_options parameter with any options accepted by Net::Curl (see http://curl.haxx.se/libcurl/c/curl_easy_setopt.html).
ssl_options
For instance, to check that the remote host has a trusted certificate, and to avoid man-in-the-middle attacks, you could do the following:
use Search::Elasticsearch; use Net::Curl::Easy qw( CURLOPT_CAINFO ); my $es = Search::Elasticsearch->new( cxn => 'NetCurl', nodes => [ "https://node1.mydomain.com:9200", "https://node2.mydomain.com:9200", ], ssl_options => { CURLOPT_CAINFO() => '/path/to/cacert.pem' } );
If the remote server cannot be verified, an Search::Elasticsearch::Error will be thrown.
If you want your client to present its own certificate to the remote server, then use:
use Net::Curl::Easy qw( CURLOPT_CAINFO CURLOPT_SSLCERT CURLOPT_SSLKEY ); my $es = Search::Elasticsearch->new( cxn => 'NetCurl', nodes => [ "https://node1.mydomain.com:9200", "https://node2.mydomain.com:9200", ], ssl_options => { CURLOPT_CAINFO() => '/path/to/cacert.pem' CURLOPT_SSLCERT() => '/path/to/client.pem', CURLOPT_SSLKEY() => '/path/to/client.pem', } );
perform_request()
($status,$body) = $self->perform_request({ # required method => 'GET|HEAD|POST|PUT|DELETE', path => '/path/of/request', qs => \%query_string_params, # optional data => $body_as_string, mime_type => 'application/json', timeout => $timeout });
Sends the request to the associated Elasticsearch node and returns a $status code and the decoded response $body, or throws an error if the request failed.
$status
$body
scheme()
is_https()
userinfo()
default_headers()
max_content_length()
build_uri()
host()
port()
uri()
is_dead()
is_live()
next_ping()
ping_failures()
mark_dead()
mark_live()
force_ping()
pings_ok()
sniff()
process_response()
Search::Elasticsearch::Role::Cxn::HTTP
Search::Elasticsearch::Cxn::Hijk
Search::Elasticsearch::Cxn::LWP
Search::Elasticsearch::Cxn::HTTPTiny
This is a stable API but this implemenation is new. Watch this space for new releases.
If you have any suggestions for improvements, or find any bugs, please report them to http://github.com/elasticsearch/elasticsearch-perl/issues. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Search::Elasticsearch::Cxn::NetCurl
You can also look for information at:
GitHub
http://github.com/elasticsearch/elasticsearch-perl
CPAN Ratings
http://cpanratings.perl.org/d/Search::Elasticsearch::Cxn::NetCurl
Search MetaCPAN
https://metacpan.org/module/Search::Elasticsearch::Cxn::NetCurl
IRC
The #elasticsearch channel on irc.freenode.net.
irc.freenode.net
Mailing list
The main Elasticsearch mailing list.
Clinton Gormley <drtech@cpan.org>
This software is Copyright (c) 2015 by Elasticsearch BV.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
To install Search::Elasticsearch::Cxn::NetCurl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Search::Elasticsearch::Cxn::NetCurl
CPAN shell
perl -MCPAN -e shell install Search::Elasticsearch::Cxn::NetCurl
For more information on module installation, please visit the detailed CPAN module installation guide.