table of contents
Search::Elasticsearch::Cxn::HTTPTiny(3) | User Contributed Perl Documentation | Search::Elasticsearch::Cxn::HTTPTiny(3) |
NAME¶
Search::Elasticsearch::Cxn::HTTPTiny - A Cxn implementation which uses HTTP::Tiny
VERSION¶
version 8.12
DESCRIPTION¶
Provides the default HTTP Cxn class and is based on HTTP::Tiny. The HTTP::Tiny backend is fast, uses pure Perl, support proxies and https and provides persistent connections.
This class does Search::Elasticsearch::Role::Cxn, whose documentation provides more information, and Search::Elasticsearch::Role::Is_Sync.
CONFIGURATION¶
Inherited configuration¶
From Search::Elasticsearch::Role::Cxn
- node
- max_content_length
- deflate
- deflate
- request_timeout
- ping_timeout
- dead_timeout
- max_dead_timeout
- sniff_request_timeout
- sniff_timeout
- handle_args
- handle_args
SSL/TLS¶
Search::Elasticsearch::Cxn::HTTPTiny uses IO::Socket::SSL to support HTTPS. By default, no validation of the remote host is performed.
This behaviour can be changed by passing the "ssl_options" parameter with any options accepted by IO::Socket::SSL. 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 IO::Socket::SSL; my $es = Search::Elasticsearch->new( nodes => [ "https://node1.mydomain.com:9200", "https://node2.mydomain.com:9200", ], ssl_options => { SSL_verify_mode => SSL_VERIFY_PEER, SSL_ca_file => '/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 Search::Elasticsearch; use IO::Socket::SSL; my $es = Search::Elasticsearch->new( nodes => [ "https://node1.mydomain.com:9200", "https://node2.mydomain.com:9200", ], ssl_options => { SSL_verify_mode => SSL_VERIFY_PEER, SSL_use_cert => 1, SSL_ca_file => '/path/to/cacert.pem', SSL_cert_file => '/path/to/client.pem', SSL_key_file => '/path/to/client.pem', } );
METHODS¶
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.
Inherited methods¶
From Search::Elasticsearch::Role::Cxn
- 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()
SEE ALSO¶
- Search::Elasticsearch::Role::Cxn
- Search::Elasticsearch::Cxn::LWP
- Search::Elasticsearch::Cxn::NetCurl
AUTHOR¶
Enrico Zimuel <enrico.zimuel@elastic.co>
COPYRIGHT AND LICENSE¶
This software is Copyright (c) 2024 by Elasticsearch BV.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
2024-03-08 | perl v5.40.0 |