table of contents
        
      
      
    - Tumbleweed 8.120.0-2.5
 - Leap-15.6
 
| 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.42.0 |