Search-Elasticsearch-Compat
view release on metacpan or search on metacpan
lib/Search/Elasticsearch/Client/Compat.pm view on Meta::CPAN
postfix => 'stats',
cmd => CMD_nodes,
qs => {
indices => [ 'boolean', 1, 0 ],
clear => [ 'boolean', 1 ],
all => [ 'boolean', 1 ],
fs => [ 'boolean', 1 ],
http => [ 'boolean', 1 ],
jvm => [ 'boolean', 1 ],
network => [ 'boolean', 1 ],
os => [ 'boolean', 1 ],
process => [ 'boolean', 1 ],
thread_pool => [ 'boolean', 1 ],
transport => [ 'boolean', 1 ],
},
},
@_
);
}
#===================================
sub shutdown {
#===================================
shift()->_do_action(
'shutdown',
{ method => 'POST',
prefix => '_cluster/nodes',
cmd => CMD_nodes,
postfix => '_shutdown',
qs => { delay => ['duration'] }
},
@_
);
}
#===================================
sub restart {
#===================================
shift()->_do_action(
'shutdown',
{ method => 'POST',
prefix => '_cluster/nodes',
cmd => CMD_nodes,
postfix => '_restart',
qs => { delay => ['duration'] }
},
@_
);
}
#===================================
sub cluster_health {
#===================================
shift()->_do_action(
'cluster_health',
{ prefix => '_cluster/health',
cmd => CMD_index,
qs => {
level => [ 'enum', [qw(cluster indices shards)] ],
wait_for_status => [ 'enum', [qw(green yellow red)] ],
wait_for_relocating_shards => ['int'],
wait_for_nodes => ['string'],
timeout => ['duration']
}
},
@_
);
}
#===================================
sub cluster_settings {
#===================================
my ( $self, $params ) = parse_params(@_);
$self->_do_action(
'cluster_settings',
{ method => 'GET',
cmd => CMD_NONE,
postfix => '_cluster/settings'
},
$params
);
}
#===================================
sub update_cluster_settings {
#===================================
my ( $self, $params ) = parse_params(@_);
$self->_do_action(
'update_cluster_settings',
{ method => 'PUT',
cmd => CMD_NONE,
postfix => '_cluster/settings',
data => {
persistent => ['persistent'],
transient => ['transient']
}
},
$params
);
}
#===================================
sub cluster_reroute {
#===================================
my ( $self, $params ) = parse_params(@_);
$params->{commands} = [ $params->{commands} ]
if $params->{commands} and ref( $params->{commands} ) ne 'ARRAY';
$self->_do_action(
'cluster_reroute',
{ prefix => '_cluster/reroute',
cmd => [],
method => 'POST',
data => { commands => ['commands'] },
qs => { dry_run => [ 'boolean', 1 ], },
},
$params
);
}
lib/Search/Elasticsearch/Client/Compat.pm view on Meta::CPAN
index => 'myindex',
percolator => 'mypercolator',
)
Throws a C<Missing> exception if the specified index or percolator does not exist,
and C<ignore_missing> is false.
=head3 percolate()
$result = $es->percolate(
index => single,
type => single,
doc => { doc to percolate },
# optional
query => { query to filter percolators },
prefer_local => 1 | 0,
)
Check for any percolators which match a document, optionally filtering
which percolators could match by passing a C<query> param, for instance:
$result = $es->percolate(
index => 'myindex',
type => 'mytype',
doc => { text => 'foo' },
query => { term => { color => 'blue' }}
);
Returns:
{
ok => 1,
matches => ['mypercolator']
}
=head2 Cluster admin methods
=head3 cluster_state()
$result = $es->cluster_state(
# optional
filter_blocks => 0 | 1,
filter_nodes => 0 | 1,
filter_metadata => 0 | 1,
filter_routing_table => 0 | 1,
filter_indices => [ 'index_1', ... 'index_n' ],
);
Returns cluster state information.
See L<http://www.elasticsearch.org/guide/reference/api/admin-cluster-state.html>
=head3 cluster_health()
$result = $es->cluster_health(
index => multi,
level => 'cluster' | 'indices' | 'shards',
timeout => $seconds
wait_for_status => 'red' | 'yellow' | 'green',
| wait_for_relocating_shards => $number_of_shards,
| wait_for_nodes => eg '>=2',
);
Returns the status of the cluster, or index|indices or shards, where the
returned status means:
=over
=item C<red>: Data not allocated
=item C<yellow>: Primary shard allocated
=item C<green>: All shards allocated
=back
It can block to wait for a particular status (or better), or can block to
wait until the specified number of shards have been relocated (where 0 means
all) or the specified number of nodes have been allocated.
If waiting, then a timeout can be specified.
For example:
$result = $es->cluster_health( wait_for_status => 'green', timeout => '10s')
See: L<http://www.elasticsearch.org/guide/reference/api/admin-cluster-health.html>
=head3 cluster_settings()
$result = $es->cluster_settings()
Returns any cluster wide settings that have been set with
L</"update_cluster_settings">.
See L<http://www.elasticsearch.org/guide/reference/api/admin-cluster-update-settings.html>
=head3 update_cluster_settings()
$result = $es->update_cluster_settings(
persistent => {...},
transient => {...},
)
For example:
$result = $es->update_cluster_settings(
persistent => {
"discovery.zen.minimum_master_nodes" => 2
},
)
C<persistent> settings will survive a full cluster restart. C<transient>
settings won't.
See L<http://www.elasticsearch.org/guide/reference/api/admin-cluster-update-settings.html>
=head3 nodes()
$result = $es->nodes(
nodes => multi,
settings => 0 | 1,
http => 0 | 1,
jvm => 0 | 1,
network => 0 | 1,
os => 0 | 1,
process => 0 | 1,
thread_pool => 0 | 1,
transport => 0 | 1
);
Returns information about one or more nodes or servers in the cluster.
See: L<http://www.elasticsearch.org/guide/reference/api/admin-cluster-nodes-info.html>
=head3 nodes_stats()
$result = $es->nodes_stats(
lib/Search/Elasticsearch/Client/Compat.pm view on Meta::CPAN
);
Restarts one or more nodes (or the whole cluster if no nodes specified),
optionally with a delay.
C<node> can also have the values C<_local>, C<_master> or C<_all>.
See: L</"KNOWN ISSUES">
=head3 current_server_version()
$version = $es->current_server_version()
Returns a HASH containing the version C<number> string and
whether or not the current server is a C<snapshot_build>.
=head2 Other methods
=head3 use_index()/use_type()
C<use_index()> and C<use_type()> can be used to set default values for
any C<index> or C<type> parameter. The default value can be overridden
by passing a parameter (including C<undef>) to any request.
$es->use_index('one');
$es->use_type(['foo','bar']);
$es->index( # index: one, types: foo,bar
data=>{ text => 'my text' }
);
$es->index( # index: two, type: foo,bar
index=>'two',
data=>{ text => 'my text' }
)
$es->search( type => undef ); # index: one, type: all
=head3 trace_calls()
$es->trace_calls(1); # log to STDERR
$es->trace_calls($filename); # log to $filename.$PID
$es->trace_calls(\*STDOUT); # log to STDOUT
$es->trace_calls($fh); # log to given filehandle
$es->trace_calls(0 | undef); # disable logging
C<trace_calls()> is used for debugging. All requests to the cluster
are logged either to C<STDERR>, or the specified filehandle,
or the specified filename, with the
current C<$PID> appended, in a form that can be rerun with curl.
The cluster response will also be logged, and commented out.
Example: C<< $es->cluster_health >> is logged as:
# [Tue Oct 19 15:32:31 2010] Protocol: http, Server: 127.0.0.1:9200
curl -XGET 'http://127.0.0.1:9200/_cluster/health'
# [Tue Oct 19 15:32:31 2010] Response:
# {
# "relocating_shards" : 0,
# "active_shards" : 0,
# "status" : "green",
# "cluster_name" : "elasticsearch",
# "active_primary_shards" : 0,
# "timed_out" : false,
# "initializing_shards" : 0,
# "number_of_nodes" : 1,
# "unassigned_shards" : 0
# }
=head3 query_parser()
$qp = $es->query_parser(%opts);
Returns an L<Search::Elasticsearch::Compat::QueryParser> object for tidying up
query strings so that they won't cause an error when passed to Elasticsearch.
See L<Search::Elasticsearch::Compat::QueryParser> for more information.
=head3 transport()
$transport = $es->transport
Returns the Transport object, eg L<Search::Elasticsearch::Compat::Transport::HTTP>.
=head3 timeout()
$timeout = $es->timeout($timeout)
Convenience method which does the same as:
$es->transport->timeout($timeout)
=head3 refresh_servers()
$es->refresh_servers()
Convenience method which does the same as:
$es->transport->refresh_servers()
This tries to retrieve a list of all known live servers in the Elasticsearch
cluster by connecting to each of the last known live servers (and the initial
list of servers passed to C<new()>) until it succeeds.
This list of live servers is then used in a round-robin fashion.
C<refresh_servers()> is called on the first request and every C<max_requests>.
This automatic refresh can be disabled by setting C<max_requests> to C<0>:
$es->transport->max_requests(0)
Or:
$es = Search::Elasticsearch::Compat->new(
servers => '127.0.0.1:9200',
max_requests => 0,
);
=head3 builder_class() | builder()
( run in 0.771 second using v1.01-cache-2.11-cpan-5511b514fd6 )