salt.modules.elasticsearch

Elasticsearch - A distributed RESTful search and analytics server

Module to provide Elasticsearch compatibility to Salt (compatible with Elasticsearch version 1.5.2+)

New in version 2015.8.0.

depends:

elasticsearch-py

configuration:

This module accepts connection configuration details either as parameters or as configuration settings in /etc/salt/minion on the relevant minions:

elasticsearch:
  host: '10.10.10.100:9200'

elasticsearch-cluster:
  hosts:
    - '10.10.10.100:9200'
    - '10.10.10.101:9200'
    - '10.10.10.102:9200'

elasticsearch-extra:
  hosts:
    - '10.10.10.100:9200'
  use_ssl: True
  verify_certs: True
  ca_certs: /path/to/custom_ca_bundle.pem
  number_of_shards: 1
  number_of_replicas: 0
  functions_blacklist:
    - 'saltutil.find_job'
    - 'pillar.items'
    - 'grains.items'
  proxies:
    - http: http://proxy:3128
    - https: http://proxy:1080

When specifying proxies the requests backend will be used and the 'proxies' data structure is passed as-is to that module.

This data can also be passed into pillar. Options passed into opts will overwrite options passed into pillar.

Some functionality might be limited by elasticsearch-py and Elasticsearch server versions.

salt.modules.elasticsearch.alias_create(indices, alias, hosts=None, body=None, profile=None, source=None)

Create an alias for a specific index/indices

indices
Single or multiple indices separated by comma, use _all to perform the operation on all indices.
alias
Alias name
body
Optional definition such as routing or filter as defined in https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
source
URL of file specifying optional definition such as routing or filter. Cannot be used in combination with body.

CLI example:

salt myminion elasticsearch.alias_create testindex_v1 testindex
salt.modules.elasticsearch.alias_delete(indices, aliases, hosts=None, body=None, profile=None, source=None)

Delete an alias of an index

indices
Single or multiple indices separated by comma, use _all to perform the operation on all indices.
aliases
Alias names separated by comma

CLI example:

salt myminion elasticsearch.alias_delete testindex_v1 testindex
salt.modules.elasticsearch.alias_exists(aliases, indices=None, hosts=None, profile=None)

Return a boolean indicating whether given alias exists

indices
Single or multiple indices separated by comma, use _all to perform the operation on all indices.
aliases
Alias names separated by comma

CLI example:

salt myminion elasticsearch.alias_exists None testindex
salt.modules.elasticsearch.alias_get(indices=None, aliases=None, hosts=None, profile=None)

Check for the existence of an alias and if it exists, return it

indices
Single or multiple indices separated by comma, use _all to perform the operation on all indices.
aliases
Alias names separated by comma

CLI example:

salt myminion elasticsearch.alias_get testindex
salt.modules.elasticsearch.cluster_health(index=None, level='cluster', local=False, hosts=None, profile=None)

New in version 2017.7.0.

Return Elasticsearch cluster health.

index
Limit the information returned to a specific index
level
Specify the level of detail for returned information, default 'cluster', valid choices are: 'cluster', 'indices', 'shards'
local
Return local information, do not retrieve the state from master node

CLI example:

salt myminion elasticsearch.health
salt.modules.elasticsearch.cluster_stats(nodes=None, hosts=None, profile=None)

New in version 2017.7.0.

Return Elasticsearch cluster stats.

nodes
List of cluster nodes (id or name) to display stats for. Use _local for connected node, empty for all

CLI example:

salt myminion elasticsearch.stats
salt.modules.elasticsearch.document_create(index, doc_type, body=None, id=None, hosts=None, profile=None, source=None)

Create a document in a specified index

index
Index name where the document should reside
doc_type
Type of the document
body
Document to store
source
URL of file specifying document to store. Cannot be used in combination with body.
id
Optional unique document identifier for specified doc_type (empty for random)

CLI example:

salt myminion elasticsearch.document_create testindex doctype1 '{}'
salt.modules.elasticsearch.document_delete(index, doc_type, id, hosts=None, profile=None)

Delete a document from an index

index
Index name where the document resides
doc_type
Type of the document
id
Document identifier

CLI example:

salt myminion elasticsearch.document_delete testindex doctype1 AUx-384m0Bug_8U80wQZ
salt.modules.elasticsearch.document_exists(index, id, doc_type='_all', hosts=None, profile=None)

Return a boolean indicating whether given document exists

index
Index name where the document resides
id
Document identifier
doc_type
Type of the document, use _all to fetch the first document matching the ID across all types

CLI example:

salt myminion elasticsearch.document_exists testindex AUx-384m0Bug_8U80wQZ
salt.modules.elasticsearch.document_get(index, id, doc_type='_all', hosts=None, profile=None)

Check for the existence of a document and if it exists, return it

index
Index name where the document resides
id
Document identifier
doc_type
Type of the document, use _all to fetch the first document matching the ID across all types

CLI example:

salt myminion elasticsearch.document_get testindex AUx-384m0Bug_8U80wQZ
salt.modules.elasticsearch.index_close(index, allow_no_indices=True, expand_wildcards='open', ignore_unavailable=True, hosts=None, profile=None)

New in version 2017.7.0.

Close specified index.

index
Index to be closed
allow_no_indices
Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes _all string or when no indices have been specified)
expand_wildcards
Whether to expand wildcard expression to concrete indices that are open, closed or both., default ‘open’, valid choices are: ‘open’, ‘closed’, ‘none’, ‘all’
ignore_unavailable
Whether specified concrete indices should be ignored when unavailable (missing or closed)

CLI example:

salt myminion elasticsearch.index_close testindex
salt.modules.elasticsearch.index_create(index, body=None, hosts=None, profile=None, source=None)

Create an index

index
Index name
body
Index definition, such as settings and mappings as defined in https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
source
URL to file specifying index definition. Cannot be used in combination with body.

CLI example:

salt myminion elasticsearch.index_create testindex
salt myminion elasticsearch.index_create testindex2 '{"settings" : {"index" : {"number_of_shards" : 3, "number_of_replicas" : 2}}}'
salt.modules.elasticsearch.index_delete(index, hosts=None, profile=None)

Delete an index

index
Index name

CLI example:

salt myminion elasticsearch.index_delete testindex
salt.modules.elasticsearch.index_exists(index, hosts=None, profile=None)

Return a boolean indicating whether given index exists

index
Index name

CLI example:

salt myminion elasticsearch.index_exists testindex
salt.modules.elasticsearch.index_get(index, hosts=None, profile=None)

Check for the existence of an index and if it exists, return it

index
Index name

CLI example:

salt myminion elasticsearch.index_get testindex
salt.modules.elasticsearch.index_open(index, allow_no_indices=True, expand_wildcards='closed', ignore_unavailable=True, hosts=None, profile=None)

New in version 2017.7.0.

Open specified index.

index
Index to be opened
allow_no_indices
Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes _all string or when no indices have been specified)
expand_wildcards
Whether to expand wildcard expression to concrete indices that are open, closed or both., default ‘closed’, valid choices are: ‘open’, ‘closed’, ‘none’, ‘all’
ignore_unavailable
Whether specified concrete indices should be ignored when unavailable (missing or closed)

CLI example:

salt myminion elasticsearch.index_open testindex
salt.modules.elasticsearch.index_template_create(name, body=None, hosts=None, profile=None, source=None)

Create an index template

name
Index template name
body
Template definition as specified in http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html
source
URL to file specifying template definition. Cannot be used in combination with body.

CLI example:

salt myminion elasticsearch.index_template_create testindex_templ '{ "template": "logstash-*", "order": 1, "settings": { "number_of_shards": 1 } }'
salt.modules.elasticsearch.index_template_delete(name, hosts=None, profile=None)

Delete an index template (type) along with its data

name
Index template name

CLI example:

salt myminion elasticsearch.index_template_delete testindex_templ user
salt.modules.elasticsearch.index_template_exists(name, hosts=None, profile=None)

Return a boolean indicating whether given index template exists

name
Index template name

CLI example:

salt myminion elasticsearch.index_template_exists testindex_templ
salt.modules.elasticsearch.index_template_get(name, hosts=None, profile=None)

Retrieve template definition of index or index/type

name
Index template name

CLI example:

salt myminion elasticsearch.index_template_get testindex_templ
salt.modules.elasticsearch.info(hosts=None, profile=None)

New in version 2017.7.0.

Return Elasticsearch information.

CLI example:

salt myminion elasticsearch.info
salt myminion elasticsearch.info profile=elasticsearch-extra
salt.modules.elasticsearch.mapping_create(index, doc_type, body=None, hosts=None, profile=None, source=None)

Create a mapping in a given index

index
Index for the mapping
doc_type
Name of the document type
body
Mapping definition as specified in https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html
source
URL to file specifying mapping definition. Cannot be used in combination with body.

CLI example:

salt myminion elasticsearch.mapping_create testindex user '{ "user" : { "properties" : { "message" : {"type" : "string", "store" : true } } } }'
salt.modules.elasticsearch.mapping_delete(index, doc_type, hosts=None, profile=None)

Delete a mapping (type) along with its data. As of Elasticsearch 5.0 this is no longer available.

index
Index for the mapping
doc_type
Name of the document type

CLI example:

salt myminion elasticsearch.mapping_delete testindex user
salt.modules.elasticsearch.mapping_get(index, doc_type, hosts=None, profile=None)

Retrieve mapping definition of index or index/type

index
Index for the mapping
doc_type
Name of the document type

CLI example:

salt myminion elasticsearch.mapping_get testindex user
salt.modules.elasticsearch.node_info(nodes=None, flat_settings=False, hosts=None, profile=None)

New in version 2017.7.0.

Return Elasticsearch node information.

nodes
List of cluster nodes (id or name) to display stats for. Use _local for connected node, empty for all
flat_settings
Flatten settings keys

CLI example:

salt myminion elasticsearch.node_info flat_settings=True
salt.modules.elasticsearch.ping(allow_failure=False, hosts=None, profile=None)

New in version 2017.7.0.

Test connection to Elasticsearch instance. This method does not fail if not explicitly specified.

allow_failure
Throw exception if ping fails

CLI example:

salt myminion elasticsearch.ping allow_failure=True
salt myminion elasticsearch.ping profile=elasticsearch-extra
salt.modules.elasticsearch.pipeline_create(id, body, hosts=None, profile=None)

New in version 2017.7.0.

Create Ingest pipeline by supplied definition. Available since Elasticsearch 5.0.

id
Pipeline id
body
Pipeline definition as specified in https://www.elastic.co/guide/en/elasticsearch/reference/master/pipeline.html

CLI example:

salt myminion elasticsearch.pipeline_create mypipeline '{"description": "my custom pipeline", "processors": [{"set" : {"field": "collector_timestamp_millis", "value": "{{_ingest.timestamp}}"}}]}'
salt.modules.elasticsearch.pipeline_delete(id, hosts=None, profile=None)

New in version 2017.7.0.

Delete Ingest pipeline. Available since Elasticsearch 5.0.

id
Pipeline id

CLI example:

salt myminion elasticsearch.pipeline_delete mypipeline
salt.modules.elasticsearch.pipeline_get(id, hosts=None, profile=None)

New in version 2017.7.0.

Retrieve Ingest pipeline definition. Available since Elasticsearch 5.0.

id
Pipeline id

CLI example:

salt myminion elasticsearch.pipeline_get mypipeline
salt.modules.elasticsearch.pipeline_simulate(id, body, verbose=False, hosts=None, profile=None)

New in version 2017.7.0.

Simulate existing Ingest pipeline on provided data. Available since Elasticsearch 5.0.

id
Pipeline id
body
Pipeline definition as specified in https://www.elastic.co/guide/en/elasticsearch/reference/master/pipeline.html
verbose
Specify if the output should be more verbose

CLI example:

salt myminion elasticsearch.pipeline_simulate mypipeline '{"docs":[{"_index":"index","_type":"type","_id":"id","_source":{"foo":"bar"}},{"_index":"index","_type":"type","_id":"id","_source":{"foo":"rab"}}]}' verbose=True
salt.modules.elasticsearch.repository_create(name, body, hosts=None, profile=None)

New in version 2017.7.0.

Create repository for storing snapshots. Note that shared repository paths have to be specified in path.repo Elasticsearch configuration option.

name
Repository name
body
Repository definition as in https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html

CLI example:

salt myminion elasticsearch.repository_create testrepo '{"type":"fs","settings":{"location":"/tmp/test","compress":true}}'
salt.modules.elasticsearch.repository_delete(name, hosts=None, profile=None)

New in version 2017.7.0.

Delete existing repository.

name
Repository name

CLI example:

salt myminion elasticsearch.repository_delete testrepo
salt.modules.elasticsearch.repository_get(name, local=False, hosts=None, profile=None)

New in version 2017.7.0.

Get existing repository details.

name
Repository name
local
Retrieve only local information, default is false

CLI example:

salt myminion elasticsearch.repository_get testrepo
salt.modules.elasticsearch.repository_verify(name, hosts=None, profile=None)

New in version 2017.7.0.

Obtain list of cluster nodes which successfully verified this repository.

name
Repository name

CLI example:

salt myminion elasticsearch.repository_verify testrepo
salt.modules.elasticsearch.search_template_create(id, body, hosts=None, profile=None)

New in version 2017.7.0.

Create search template by supplied definition

id
Template ID
body
Search template definition

CLI example:

salt myminion elasticsearch.search_template_create mytemplate '{"template":{"query":{"match":{"title":"{{query_string}}"}}}}'
salt.modules.elasticsearch.search_template_delete(id, hosts=None, profile=None)

New in version 2017.7.0.

Delete existing search template definition.

id
Template ID

CLI example:

salt myminion elasticsearch.search_template_delete mytemplate
salt.modules.elasticsearch.search_template_get(id, hosts=None, profile=None)

New in version 2017.7.0.

Obtain existing search template definition.

id
Template ID

CLI example:

salt myminion elasticsearch.search_template_get mytemplate
salt.modules.elasticsearch.snapshot_create(repository, snapshot, body=None, hosts=None, profile=None)

New in version 2017.7.0.

Create snapshot in specified repository by supplied definition.

repository
Repository name
snapshot
Snapshot name
body
Snapshot definition as in https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html

CLI example:

salt myminion elasticsearch.snapshot_create testrepo testsnapshot '{"indices":"index_1,index_2","ignore_unavailable":true,"include_global_state":false}'
salt.modules.elasticsearch.snapshot_delete(repository, snapshot, hosts=None, profile=None)

New in version 2017.7.0.

Delete snapshot from specified repository.

repository
Repository name
snapshot
Snapshot name

CLI example:

salt myminion elasticsearch.snapshot_delete testrepo testsnapshot
salt.modules.elasticsearch.snapshot_get(repository, snapshot, ignore_unavailable=False, hosts=None, profile=None)

New in version 2017.7.0.

Obtain snapshot residing in specified repository.

repository
Repository name
snapshot
Snapshot name, use _all to obtain all snapshots in specified repository
ignore_unavailable
Ignore unavailable snapshots

CLI example:

salt myminion elasticsearch.snapshot_get testrepo testsnapshot
salt.modules.elasticsearch.snapshot_restore(repository, snapshot, body=None, hosts=None, profile=None)

New in version 2017.7.0.

Restore existing snapshot in specified repository by supplied definition.

repository
Repository name
snapshot
Snapshot name
body
Restore definition as in https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html

CLI example:

salt myminion elasticsearch.snapshot_restore testrepo testsnapshot '{"indices":"index_1,index_2","ignore_unavailable":true,"include_global_state":true}'
salt.modules.elasticsearch.snapshot_status(repository=None, snapshot=None, ignore_unavailable=False, hosts=None, profile=None)

New in version 2017.7.0.

Obtain status of all currently running snapshots.

repository
Particular repository to look for snapshots
snapshot
Snapshot name
ignore_unavailable
Ignore unavailable snapshots

CLI example:

salt myminion elasticsearch.snapshot_status ignore_unavailable=True