App-es
view release on metacpan or search on metacpan
index => $n,
type => $type,
);
printf "%s: %s\n", $type, $search->{count};
}
}
}
sub index_put_doc {
my ( $index, $type, $doc ) = @_;
my $json;
eval {
$json = decode_json( read_file($doc) );
1;
} or do {
die "[ERROR] invlid json data in $doc\n";
};
$es->index(
index => $index,
type => $type,
data => $json,
create => 1
);
}
sub index_search {
my ( $index, $type, $string, $size ) = @_;
my ( $field, $text ) = split q{:} => $string;
my $query = {
query_string => {
default_field => $field,
query => $text,
}
};
my $result = $es->search(
index => $index,
type => $type,
size => $size || 24,
query => $query,
highlight => { fields => { $field => {} },
pre_tags => [ '__STARTCOLOR__' ],
post_tags => [ '__ENDCOLOR__' ],
},
);
my @output =
map { { id => $_->{_id},
lines => $_->{highlight}{$field},
}
}
@{ $result->{hits}{hits} };
for my $o ( @output ) {
for my $line ( @{ $o->{lines} } ) {
$line =~ s/\n/ /g;
$line =~ s/__STARTCOLOR__/color 'bold red'/eg;
$line =~ s/__ENDCOLOR__/color 'reset'/eg;
printf "%s: %s\n", colored ($o->{id}, 'cyan'), $line;
}
}
}
sub index_get {
my ( $index, $type, $doc_id ) = @_;
my $get = $es->get(
index => $index,
type => $type,
id => $doc_id,
);
print to_json($get->{_source}, { pretty => 1 }), "\n";
}
sub index_alias {
my ( $index, $alias ) = @_;
my $result = $es->aliases( actions => [
{ add => { index => $index, alias => $alias } }
] );
warn "[ERROR] failed to create alias $alias for index $index\n" unless $result->{ok};
}
sub index_unalias {
my ( $index, $alias ) = @_;
my $result = $es->aliases( actions => [
{ remove => { index => $index, alias => $alias } }
] );
warn "[ERROR] failed to remove alias $alias for index $index\n" unless $result->{ok};
}
sub _get_elastic_search_aliases {
my ($es) = @_;
my @aliases;
my $aliases = $es->get_aliases;
if ($ElasticSearch::VERSION < 0.52) {
@aliases = keys %{$aliases->{aliases}};
}
else {
for my $i (keys %$aliases) {
push @aliases, keys %{$aliases->{$i}{aliases}};
}
@aliases = uniq @aliases;
}
return \@aliases;
}
sub _get_elastic_search_index_alias_mapping {
my ($es) = @_;
my $aliases = $es->get_aliases;
my %mapping;
if ($ElasticSearch::VERSION < 0.52) {
( run in 0.407 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )