App-ElasticSearch-Utilities
view release on metacpan or search on metacpan
lib/App/ElasticSearch/Utilities.pm view on Meta::CPAN
sub es_settings {
return es_request('_settings');
}
sub es_node_stats {
my (@nodes) = @_;
my @cmd = qw(_nodes);
push @cmd, join(',', @nodes) if @nodes;
push @cmd, 'stats';
return es_request(join('/',@cmd));
}
sub es_flatten_hash {
my $hash = shift;
my $_flat = flatten($hash, { HashDelimiter=>':', ArrayDelimiter=>':' });
my %compat = map { s/:/./gr => $_flat->{$_} } keys %{ $_flat };
return \%compat;
}
sub es_human_count {
my ($size) = @_;
my $unit = 'docs';
my @units = qw(thousand million billion);
while( $size > 1000 && @units ) {
$size /= 1000;
$unit = shift @units;
}
return sprintf "%0.2f %s", $size, $unit;
}
sub es_human_size {
my ($size) = @_;
my $unit = 'b';
my @units = qw(Kb Mb Gb Tb);
while( $size > 1024 && @units ) {
$size /= 1024;
$unit = shift @units;
}
return sprintf "%0.2f %s", $size, $unit;
}
sub es_format_numeric {
my($v,$len) = @_;
$len ||= 3;
# If this looks like a number, format it
if ( $v =~ /^([0-9]+)\.(0*)[0-9]*$/ ) {
my $ints = length($1);
my $zeroes = length($2);
my $precision = $len + $zeroes - $ints;
$v = $ints > $len ? int($v)
: $precision > 0 ? sprintf("%0.${precision}f",$v)
: $v;
}
return $v;
}
sub def {
my($key)= map { uc }@_;
es_utils_initialize() unless keys %DEF;
return exists $DEF{$key} ? $DEF{$key} : undef;
}
sub es_local_index_meta {
my ($key,$name_or_base) = @_;
es_utils_initialize() unless keys %DEF;
if( exists $_GLOBALS{meta} ) {
my $meta = $_GLOBALS{meta};
my @search = ( $name_or_base );
push @search, es_index_strip_date($name_or_base);
push @search, es_index_bases($name_or_base);
foreach my $check ( @search ) {
if( exists $meta->{$check} && exists $meta->{$check}{$key} ) {
return $meta->{$check}{$key};
}
}
}
return;
}
1;
__END__
=pod
=head1 NAME
App::ElasticSearch::Utilities - Utilities for Monitoring ElasticSearch
=head1 VERSION
version 8.9
=head1 SYNOPSIS
( run in 1.294 second using v1.01-cache-2.11-cpan-6aa56a78535 )