App-es

 view release on metacpan or  search on metacpan

bin/es  view on Meta::CPAN

                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 )