App-ElasticSearch-Utilities
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
scripts/es-copy-index.pl view on Meta::CPAN
#!perl
# PODNAME: es-copy-index.pl
# ABSTRACT: Copy an index from one cluster to another
use strict;
use warnings;
use App::ElasticSearch::Utilities qw(:default :index);
use App::ElasticSearch::Utilities::Query;
use App::ElasticSearch::Utilities::QueryString;
use CLI::Helpers qw(:all);
use File::Basename;
use File::Slurp::Tiny qw(read_lines);
use Getopt::Long qw(:config posix_default no_ignore_case no_ignore_case_always);
use Hash::Merge::Simple qw(clone_merge);
use JSON::MaybeXS;
use Pod::Usage;
use Ref::Util qw(is_hashref);
use Time::HiRes qw(time);
#------------------------------------------------------------------------#
# Argument Parsing
my %OPT;
GetOptions(\%OPT, qw(
from=s
to=s
source=s
destination=s
append|A
block=i
mapping=s
settings=s
help|h
manual|m
));
#------------------------------------------------------------------------#
# Documentation
pod2usage(1) if $OPT{help};
pod2usage(-exitstatus => 0, -verbose => 2) if $OPT{manual};
debug_var(\%OPT);
#------------------------------------------------------------------------#
# Copy To/From
my %INDEX = (
from => $OPT{source},
to => exists $OPT{destination} ? $OPT{destination} : $OPT{source},
block => exists $OPT{block} ? $OPT{block} : 1000,
);
my %HOST = (
from => $OPT{from},
to => exists $OPT{to} ? $OPT{to} : $OPT{from},
);
if( $HOST{to} eq $HOST{from} && $INDEX{to} eq $INDEX{from} ) {
output({color=>'red',IMPORTANT=>1},
"FATAL: Cannot copy from the same host to the same index name!"
);
exit 1;
}
#------------------------------------------------------------------------#
# Build the Query
my $JSON = JSON->new->pretty->canonical;
my $qs = App::ElasticSearch::Utilities::QueryString->new();
my $q = @ARGV ? $qs->expand_query_string(@ARGV)
: App::ElasticSearch::Utilities::Query->new(must => {match_all=>{}});
$q->set_scan_scroll('1m');
$q->set_size( $INDEX{block} );
# Connect to ElasticSearch
my %ES = ();
foreach my $dir (qw(from to)) {
$ES{$dir} = es_connect( $HOST{$dir} );
}
die "Invalid index: $INDEX{from}" unless $ES{from}->exists( index => $INDEX{from} );
my $TO_EXISTS = $ES{to}->exists( index => $INDEX{to} );
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.519 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )