App-ElasticSearch-Utilities
view release on metacpan or search on metacpan
lib/App/ElasticSearch/Utilities.pm view on Meta::CPAN
_add_fields($f,$ref->{type},@path,$k);
}
}
}
# Unknown data, throw an error if we care that deeply.
else {
debug({stderr=>1,color=>'red'},
sprintf "_find_fields(): Invalid property at: %s ref info: %s",
join('.', @path),
join(',', is_hashref($ref) ? sort keys %{$ref} :
ref $ref ? ref $ref : 'unknown ref'
),
);
}
}
}
sub es_close_index {
my($index) = @_;
return es_request('_close',{ method => 'POST', index => $index });
}
sub es_open_index {
my($index) = @_;
return es_request('_open',{ method => 'POST', index => $index });
}
sub es_delete_index {
my($index) = @_;
return es_request('',{ method => 'DELETE', index => $index });
}
sub es_optimize_index {
my($index) = @_;
return es_request('_forcemerge',{
method => 'POST',
index => $index,
uri_param => {
max_num_segments => 1,
},
});
}
sub es_apply_index_settings {
my($index,$settings) = @_;
if(!is_hashref($settings)) {
output({stderr=>1,color=>'red'}, 'usage is es_apply_index_settings($index,$settings_hashref)');
return;
}
return es_request('_settings',{ method => 'PUT', index => $index },$settings);
}
sub es_index_segments {
my ($index) = @_;
if( !defined $index || !length $index || !es_index_valid($index) ) {
output({stderr=>1,color=>'red'}, "es_index_segments('$index'): invalid index");
return;
}
return es_request('_segments', {
index => $index,
});
}
sub es_segment_stats {
my ($index) = @_;
my %segments = map { $_ => 0 } qw(shards segments);
my $result = es_index_segments($index);
if(defined $result) {
my $shard_data = $result->{indices}{$index}{shards};
foreach my $id (keys %{$shard_data}) {
$segments{segments} += $shard_data->{$id}[0]{num_search_segments};
$segments{shards}++;
}
}
return wantarray ? %segments : \%segments;
}
sub es_index_stats {
my ($index) = @_;
return es_request('_stats', {
index => $index
});
}
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));
}
( run in 1.153 second using v1.01-cache-2.11-cpan-5837b0d9d2c )