The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.