NAME
Elastic::Model::Role::Index - Provides admin methods common to indices and aliases
VERSION
version 0.52
SYNOPSIS
$admin
->
close
();
$admin
->
open
();
$admin
->
delete
();
$admin
->refresh();
$admin
->update_mapping(
@types
);
$admin
->delete_mapping(
@types
);
$admin
->update_analyzers();
$admin
->update_settings(
%settings
);
$bool
=
$admin
->is_alias;
$bool
=
$admin
->is_index;
$bool
=
$admin
->
exists
;
DESCRIPTION
Elastic::Model::Role::Index is a role which provides admin methods common to indices and aliases. It is consumed by Elastic::Model::Index and Elastic::Model::Alias.
See Elastic::Manual::Scaling for more about how domains, indices and aliases relate to each other.
ATTRIBUTES
name
$name
=
$admin
->name;
The name of the index or alias to be administered. This defaults to the name of the "namespace" but can be overridden when creating a new Elastic::Model::Index or Elastic::Model::Alias object, eg:
$index
=
$namesapace
->
index
(
'index_name'
)
namespace
The Elastic::Model::Namespace object used to create the Elastic::Model::Index or Elastic::Model::Alias object.
es
The same Search::Elasticsearch connection as "es" in Elastic::Model::Role::Model.
METHODS
delete()
$admin
=
$admin
->
delete
();
$admin
=
$admin
->
delete
(
%args
);
Deletes the index (or indices pointed to by alias ) "name". Any %args
are passed directly to "delete()" in Search::Elasticsearch::Client::Direct::Indices. For example:
$admin
->
delete
(
ignore
=> 404 );
refresh()
$admin
=
$admin
->refresh();
Forces the the index (or indices pointed to by alias ) "name" to be refreshed, ie all changes to the docs in the index become visible to search. By default, indices are refreshed once every second anyway. You shouldn't abuse this option as it will have a performance impact.
open()
$admin
=
$admin
->
open
();
Opens the index (or the SINGLE index pointed to by alias ) "name".
close()
$admin
=
$admin
->
close
();
Closes the index (or the SINGLE index pointed to by alias ) "name".
index_config()
$config
=
$admin
->index_config(
settings
=> \
%settings
,
types
=> \
@types
);
Returns a hashref containing the index/alias "name", the settings, and the mappings for the current namespace. The generated analysis settings are merged into any %settings
that you provide. Mappings and analysis settings will be for all @types
known to the "namespace" unless specified.
This method is used by "update_analyzers()" and "create_index()" in Elastic::Model::Index.
update_settings()
$admin
=
$admin
->update_settings(
%settings
);
Updates the index settings for the the index (or indices pointed to by alias ) "name".
For example, if you want to rebuild an index, you could disable refresh until you are finished indexing:
$admin
->update_settings(
refresh_interval
=> -1 );
populate_index();
$admin
->update_settings(
refresh_interval
=>
'1s'
);
update_analyzers()
$admin
=
$admin
->update_analyzers(
types
=> \
@types
);
Mostly, analyzers can't be changed on an existing index, but new analyzers can be added. "update_analyzers()" will generate a new analyzer configuration and try to update index (or the indices pointed to by alias) "name".
You can limit the analyzers to those required for a specific list of @types
, otherwise it calculates the analyzer configuration for all types known to the "namespace".
update_mapping()
$admin
=
$admin
->update_mapping();
$admin
=
$admin
->update_mapping(
@type_names
);
$admin
=
$admin
->update_mapping(
@type_names
, {
ignore_conflicts
=> 1 } );
Type mappings cannot be changed on an existing index, but they can be added to. "update_mapping()" will generate a new type mapping from your doc classes, and try to update index (or the indices pointed to by alias) "name".
You can optionally specify a list of types to update, otherwise it will update all types known to the "namespace".
$admin
->update_mapping(
'user'
,
'post'
);
Any optional args passed as a hashref as the final parameter will be passed to "put_mapping()" in Search::Elasticsearch::Client::Direct::Indices
delete_mapping();
$admin
=
$admin
->delete_mapping(
@types
);
$admin
=
$admin
->delete_mapping(
@types
, {
ignore
=> 404 });
Deletes the type mapping AND THE DOCUMENTS for the listed types in the index (or the indices pointed to by alias) "name". Any optional args passed as a hashref as the final parameter will be passed to "delete_mapping()" in Search::Elasticsearch::Client::Direct::Indices.
exists()
$bool
=
$admin
->
exists
();
Checks whether the index (or ALL the indices pointed to by alias ) "name" exist.
is_alias()
$bool
=
$admin
->is_alias();
Returns true if "name" is an alias.
is_index()
$bool
=
$admin
->is_index();
Returns true if "name" is an index.
SEE ALSO
AUTHOR
Clinton Gormley <drtech@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Clinton Gormley.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.