NAME

Search::Elasticsearch::Cxn::AEHTTP - An async Cxn implementation which uses AnyEvent::HTTP

VERSION

version 7.30

DESCRIPTION

Provides the default async HTTP Cxn class and is based on AnyEvent::HTTP. The AEHTTP 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, Search::Elasticsearch::Role::Async::Cxn, and Search::Elasticsearch::Role::Is_Async.

CONFIGURATION

Inherited configuration

From Search::Elasticsearch::Role::Cxn

SSL/TLS

Search::Elasticsearch::Cxn::AEHTTP uses AnyEvent::TLS 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 AnyEvent::TLS. 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::Async;

    my $es = Search::Elasticsearch::Async->new(
        nodes => [
            "https://node1.mydomain.com:9200",
            "https://node2.mydomain.com:9200",
        ],
        ssl_options => {
            verify              => 1,
            verify_peername     => 'https'
            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::Async;

    my $es = Search::Elasticsearch::Async->new(
        nodes => [
            "https://node1.mydomain.com:9200",
            "https://node2.mydomain.com:9200",
        ],
        ssl_options => {
            verify              => 1,
            verify_peername     => 'https'
            ca_file             => '/path/to/cacert.pem'
            cert_file           => '/path/to/client.pem',
        }
    );

METHODS

perform_request()

    $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
    })
    ->then(sub { my ($status,body) = @_; ...})

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

From Search::Elasticsearch::Role::Async::Cxn

SEE ALSO

AUTHOR

Enrico Zimuel <enrico.zimuel@elastic.co>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2020 by Elasticsearch BV.

This is free software, licensed under:

  The Apache License, Version 2.0, January 2004