Skip to content

salt-formulas/salt-formula-elasticsearch

Repository files navigation

Elasticsearch

Elasticsearch provides a distributed, multitenant-capable full-text search engine with a HTTP web interface and schema-free JSON documents.

Sample pillars

Single-node elasticsearch with clustering disabled:

elasticsearch:
  server:
    enabled: true
    bind:
      address: 0.0.0.0
      port: 9200
    cluster:
      multicast: false
    index:
      shards: 1
      replicas: 0

Setup shared repository for snapshots:

elasticsearch:
  server:
    snapshot:
      reponame:
        path: /var/lib/glusterfs/repo
        compress: true

Cluster with manually defined members:

elasticsearch:
  server:
    enabled: true
    bind:
      address: 0.0.0.0
      port: 9200
    cluster:
      multicast: false
      members:
        - host: elastic01
          port: 9300
        - host: elastic02
          port: 9300
        - host: elastic03
          port: 9300
    index:
      shards: 5
      replicas: 1

Common definition for curator:

elasticsearch:
  server:
    curator:
      timeout: 900
      logfile: /var/log/elasticsearch/curator.log
      logformat: json
      master_only: true
      actions:
        - action: delete_indices
          description: >-
            Delete indices older than 45 days (based on index name).
            Ignore the error if the filter does not result in an actionable
            list of indices (ignore_empty_list) and exit cleanly.
          options:
            ignore_empty_list: True
            continue_if_exception: False
            disable_action: False
          filters:
            - filtertype: pattern
              kind: regex
              value: '.*\-\d\d\d\d\.\d\d\.\d\d$'
            - filtertype: age
              source: name
              direction: older
              timestring: '%Y.%m.%d'
              unit: days
              unit_count: 90
        - action: replicas
          description: >-
            Reduce the replica count to 0 for indices older than 30 days
            (based on index creation_date)
          options:
            count: 0
            wait_for_completion: False
            continue_if_exception: False
            disable_action: False
          filters:
            - filtertype: pattern
              kind: regex
              value: '.*\-\d\d\d\d\.\d\d\.\d\d$'
            - filtertype: age
              source: creation_date
              direction: older
              unit: days
              unit_count: 30
        - action: forcemerge
          description: >-
            forceMerge indices older than 2 days (based on index
            creation_date) to 2 segments per shard.  Delay 120 seconds
            between each forceMerge operation to allow the cluster to
            quiesce.
            This action will ignore indices already forceMerged to the same
            or fewer number of segments per shard, so the 'forcemerged'
            filter is unneeded.
          options:
            max_num_segments: 2
            delay: 120
            continue_if_exception: False
            disable_action: True
          filters:
            - filtertype: pattern
              kind: regex
              value: '.*\-\d\d\d\d\.\d\d\.\d\d$'
            - filtertype: age
              source: creation_date
              direction: older
              unit: days
              unit_count: 2

Client setup

Client with host and port:

elasticsearch:
  client:
    enabled: true
    server:
      host: elasticsearch.host
      port: 9200

Client where you download an index template that is stored in the directory files/:

elasticsearch:
  client:
    enabled: true
    server:
      host: elasticsearch.host
      port: 9200
    index:
      my_index:
        enabled: true
        template: elasticsearch/files/my_index_template.json

Client where you download an index template from the metadata definition and force index creation:

elasticsearch:
  client:
    enabled: true
    server:
      host: elasticsearch.host
      port: 9200
    index:
      my_index:
        enabled: true
        force_operation: true
        definition:
          template: notifications
          settings:
            number_of_shards: 5
            number_of_replicas: 1
          mappings:
            notification:
              properties:
                applicationId:
                  type: long
                content:
                  type: text
                  fields:
                    keyword:
                      type: keyword
                      ignore_above: 256

Upgrade operations

Default elasticsearch client state can only create index temlates. To update exisiting ones according to pillar dedicated state should be run explicitly:

salt -C 'I@elasticsearch:client' state.sls elasticsearch.client.update_index_templates

Read more

Documentation and Bugs

To learn how to install and update salt-formulas, consult the documentation available online at:

http://salt-formulas.readthedocs.io/

In the unfortunate event that bugs are discovered, they should be reported to the appropriate issue tracker. Use Github issue tracker for specific salt formula:

https://github.com/salt-formulas/salt-formula-elasticsearch/issues

For feature requests, bug reports or blueprints affecting entire ecosystem, use Launchpad salt-formulas project:

https://launchpad.net/salt-formulas

You can also join salt-formulas-users team and subscribe to mailing list:

https://launchpad.net/~salt-formulas-users

Developers wishing to work on the salt-formulas projects should always base their work on master branch and submit pull request against specific formula.

https://github.com/salt-formulas/salt-formula-elasticsearch

Any questions or feedback is always welcome so feel free to join our IRC channel:

#salt-formulas @ irc.freenode.net