Configuration

Configure Elasticseach

The Elasticsearch configuration files are in the /etc/elasticsearch directory.

elasticsearch.yml configures the Elasticsearch server settings.

logging.yml provides configuration for logging. You can find the resulting logs in /var/log/elasticsearch by default.

There is actually no need to configure anything to have Elasticsearch running.

Small configuration

Set cluster.name and node.name in elasticsearch.yml cluster.name: mycluster node.name: "My Node"

Setting node.name specifies the name of the server (node) and the cluster to which the latter is associated.

If you don’t customize these variable, a node.name will be assigned automatically in respect to the Droplet hostname. The cluster.name will be automatically set to the name of the default cluster.

When you are done configuring, run: sudo systemctl restart elasticsearch

Medium configuration

The setting which determines the role of the server is called node.master. By default, a node is a master. If you have only one Elasticsearch node, you should leave this option to the default true value because at least one master is always needed. Alternatively, if you wish to configure the node as a slave, assign a false value to the variable node.master like this:

node.master: false

Another important configuration option is node.data, which determines whether a node will store data or not. In most cases this option should be left to its default value (true), but there are two cases in which you might wish not to store data on a node. One is when the node is a dedicated master” as previously mentioned. The other is when a node is used only for fetching data from nodes and aggregating results. In the latter case the node will act up as a search load balancer.

node.data: false

In larger Elasticsearch deployments with many nodes, two other important options are index.number_of_shards and index.number_of_replicas. The first determines how many pieces, or shards, the index will be split into. The second defines the number of replicas which will be distributed across the cluster. Having more shards improves the indexing performance, while having more replicas makes searching faster.

By default, the number of shards is 5 and the number of replicas is 1. Assuming that you are still exploring and testing Elasticsearch on a single node, you can start with only one shard and no replicas. Thus, their values should be set like this:

index.number_of_shards: 1 index.number_of_replicas: 0

Final setting path.data, which determines the path where data is stored. The default path is /var/lib/elasticsearch. In a production environment, it’s recommended that you use a dedicated partition and mount point for storing Elasticsearch data. In the best case, this dedicated partition will be a separate storage media which will provide better performance and data isolation. You can specify a different path.data path by specifying it like this:

path.data: /media/different_media

When you are done configuring, run: sudo systemctl restart elasticsearch