All actions must be performed as root.
It is assumed that downloaded and unpacked elasticsearch. If not please follow the tutorial at elastic.co: Install Elasticsearch with .zip or .tar.gz
For this tutorial we assume the following file locations:
elasticsearch /usr/local/elasticsearch data folder /u01/data/elasticsearch log folder /u01/data/elasticsearch/log
We will be using an elasticsearch user who must have ownership of all previous listed folders.
groupadd elasticsearch && useradd -r -g elasticsearch -s /bin/false elasticsearch chown -R elasticsearch:elasticsearch <FOLDER>
Modified elasticsearch.yml (adjust the values to your needs):
# ======================== Elasticsearch Configuration ========================= # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # Before you set out to tweak and tune the configuration, make sure you # understand what are you trying to accomplish and the consequences. # # The primary way of configuring a node is via this file. This template lists # the most important settings you may want to configure for a production cluster. # # Please consult the documentation for further information on configuration options: # https://www.elastic.co/guide/en/elasticsearch/reference/index.html # # ---------------------------------- Cluster ----------------------------------- # # Use a descriptive name for your cluster: # cluster.name: culbor-cluster # # ------------------------------------ Node ------------------------------------ # # Use a descriptive name for the node: # node.name: culbor-node-1 # # Add custom attributes to the node: # #node.attr.rack: r1 # # ----------------------------------- Paths ------------------------------------ # # Path to directory where to store the data (separate multiple locations by comma): # path.data: /u01/data/elasticsearch/ # # Path to log files: # path.logs: /u01/data/elasticsearch/log # # ----------------------------------- Memory ----------------------------------- # # Lock the memory on startup: # #bootstrap.memory_lock: true # # Make sure that the heap size is set to about half the memory available # on the system and that the owner of the process is allowed to use this # limit. # # Elasticsearch performs poorly when the system is swapping the memory. # # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # #network.host: 192.168.0.1 # # Set a custom port for HTTP: # #http.port: 9200 # # For more information, consult the network module documentation. # # --------------------------------- Discovery ---------------------------------- # # Pass an initial list of hosts to perform discovery when new node is started: # The default list of hosts is ["127.0.0.1", "[::1]"] # #discovery.zen.ping.unicast.hosts: ["host1", "host2"] # # Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1): # #discovery.zen.minimum_master_nodes: 3 # # For more information, consult the zen discovery module documentation. # # ---------------------------------- Gateway ----------------------------------- # # Block initial recovery after a full cluster restart until N nodes are started: # #gateway.recover_after_nodes: 3 # # For more information, consult the gateway module documentation. # # ---------------------------------- Various ----------------------------------- # # Require explicit names when deleting indices: # #action.destructive_requires_name: true
Systemd service script at /etc/systemd/system/elasticsearch.service
:
[Unit] Description=Elasticsearch instance Wants=network-online.target After=network-online.target [Service] User=elasticsearch Group=elasticsearch ExecStartPre=/usr/local/elasticsearch/bin/elasticsearch-systemd-pre-exec ExecStart=/usr/local/elasticsearch/bin/elasticsearch \ -p /u01/data/elasticsearch/log/elasticsearch.pid StandardOutput=journal StandardError=inherit # Disable timeout logic and wait until process is stopped TimeoutStopSec=0 # SIGTERM signal is used to stop the Java process KillSignal=SIGTERM # Java process is never killed SendSIGKILL=no # When a JVM receives a SIGTERM signal it exits with code 143 SuccessExitStatus=143 [Install] WantedBy=multi-user.target
Add the service to autostart and start the service:
systemctl enable elasticsearch.service systemctl start elasticsearch.service &