Search...xn::LWP(3pm)
π Search::Elasticsearch::Cxn::LWP β the LWP connection girly π
okay bestie, gather round, because this is the Search::Elasticsearch::Cxn::LWP page from the perl manual (3pm, user contributed perl documentation, iykyk) and she is serving. β¨
πΈ NAME πΈ
Search::Elasticsearch::Cxn::LWP β literally a Cxn implementation that uses LWP. that's the whole name. that's the whole vibe. π
β¨ VERSION β¨
version 8.12 β yes she's on 8.12, keep up π«Ά
π¦ DESCRIPTION π¦
So what she does: she provides an HTTP Cxn class, and she's based on LWP. The LWP backend is pure Perl and it keeps persistent connections alive. no cap. π
This class does Search::Elasticsearch::Role::Cxn β and that documentation has more info if you're nosy (affectionate). She also does Search::Elasticsearch::Role::Is_Sync. π
π CONFIGURATION π
π Inherited configuration π
Inherited from Search::Elasticsearch::Role::Cxn, babes:
nodemax_content_lengthdeflatedeflaterequest_timeoutping_timeoutdead_timeoutmax_dead_timeoutsniff_request_timeoutsniff_timeouthandle_argshandle_args
(yes deflate and handle_args are each in there twice. not me editing the source, okay, that's just what the page says π)
π SSL/TLS π
Search::Elasticsearch::Cxn::LWP uses IO::Socket::SSL to support HTTPS. By default, no validation of the remote host is performed. π
You can change that behaviour by passing the "ssl_options" parameter with any options that IO::Socket::SSL accepts. For instance, if you want to check that the remote host has a trusted certificate, and to dodge man-in-the-middle attacks, you could do the following:
use Search::Elasticsearch;
my $es = Search::Elasticsearch->new(
cxn => 'LWP',
nodes => [
"https://node1.mydomain.com:9200",
"https://node2.mydomain.com:9200",
],
ssl_options => {
verify_hostname => 1,
SSL_ca_file => '/path/to/cacert.pem'
}
);
If the remote server cannot be verified, an Search::Elasticsearch::Error will be thrown β LWP does not allow us to detect that the connection error was due to invalid SSL. π (it's giving "we tried our best")
And if you want your client to present its own certificate to the remote server, then use:
use Search::Elasticsearch;
my $es = Search::Elasticsearch->new(
cxn => 'LWP',
nodes => [
"https://node1.mydomain.com:9200",
"https://node2.mydomain.com:9200",
],
ssl_options => {
verify_hostname => 1,
SSL_ca_file => '/path/to/cacert.pem',
SSL_use_cert => 1,
SSL_cert_file => '/path/to/client.pem',
SSL_key_file => '/path/to/client.pem',
}
);
slay. π₯
π 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
});
She sends the request to the associated Elasticsearch node and returns a $status code and the decoded response $body. or she throws an error if the request failed. main character behaviour tbh π
π§ Inherited methods π§
Inherited 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()
look at that list. iconic. no notes. β¨
π SEE ALSO π
Search::Elasticsearch::Role::CxnSearch::Elasticsearch::Cxn::HTTPTinySearch::Elasticsearch::Cxn::NetCurl
go read those too, bestie, they're all in the family π«Ά
πΈ AUTHOR πΈ
Enrico Zimuel <enrico.zimuel@elastic.co> β thank u for ur service π
π 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
and that's the page!! π footer tea for the very end: this was perl v5.38.2, dated 2024-02-04, and the page is Search...xn::LWP(3pm) (the truncated 3pm manual girlie). mwah, go forth and connect ππ
β¨
π¦ where this page comes from
- debian trixie: libsearch-elasticsearch-perl 8.12-1 Β· Apache-2.0
- ubuntu noble: libsearch-elasticsearch-perl 8.12-1 Β· Apache-2.0
- ubuntu resolute: libsearch-elasticsearch-perl 8.12-1 Β· Apache-2.0
- ubuntu stonking: libsearch-elasticsearch-perl 8.12-1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms