Elasticsearch is a highly scalable open-source full-text search and analytics engine. It is widely used for log and event data analysis, as well as for powering search functionality on websites and applications. Configuring Elasticsearch on Linux enables powerful search capabilities for large datasets and is key to unlocking the full potential of your data.

This guide will walk you through the necessary steps to install and configure Elasticsearch on a Linux-based system.
Prerequisites
Before you start the installation and configuration process, ensure you have the following:
- Linux Distribution: Elasticsearch is compatible with most Linux distributions, including Ubuntu, CentOS, and Debian.
- Root Access: You will need root or sudo privileges to install Elasticsearch and perform configuration tasks.
- System Requirements:
- At least 2 GB of RAM (4 GB or more recommended for production environments).
- At least 10 GB of free disk space for data storage.
- A stable internet connection to download the necessary Elasticsearch packages.
- Java: Elasticsearch requires Java. Ensure that OpenJDK or Oracle JDK is installed on your system. OpenJDK 11 or later is recommended.
These prerequisites ensure that your server has the necessary components to run Elasticsearch smoothly.
Configure Elasticsearch on Linux
Configure Elasticsearch on Linux involves installing and setting up the Elasticsearch server, adjusting configurations for optimal performance, and ensuring proper integration with your system. Elasticsearch is a powerful, scalable search engine used for managing large datasets and enabling fast, real-time search capabilities.
Install Elasticsearch on Linux
The first step is to install Elasticsearch. This can be done by downloading the necessary packages for your Linux distribution.
For Ubuntu/Debian
Elasticsearch is available via the official Elasticsearch APT repository. To install it on Ubuntu or Debian, follow these steps:
- Import the Elasticsearch PGP Key:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- Add the Elasticsearch APT Repository:
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
- Install Elasticsearch:
sudo apt updatesudo apt install elasticsearch
For CentOS/RHEL
To install Elasticsearch on CentOS or RHEL, follow these steps:
- Import the Elasticsearch GPG Key:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- Add the Elasticsearch YUM Repository:
sudo sh -c 'echo "[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1" > /etc/yum.repos.d/elasticsearch.repo'
- Install Elasticsearch:
sudo yum install elasticsearch
Start and Enable Elasticsearch Service
After installing Elasticsearch, you need to start the service and enable it to start automatically on system boot.
Start Elasticsearch
Run the following command to start Elasticsearch:
- For Ubuntu/Debian:
sudo systemctl start elasticsearch
- For CentOS/RHEL:
sudo systemctl start elasticsearch
Enable Elasticsearch on Boot
Ensure Elasticsearch starts automatically when the system reboots:
- For Ubuntu/Debian:
sudo systemctl enable elasticsearch
- For CentOS/RHEL:
sudo systemctl enable elasticsearch
- Verify Elasticsearch Status
Check if Elasticsearch is running properly by querying its health status:
curl -X GET "localhost:9200/"
You should receive a JSON response with details about your Elasticsearch node.
Configure Elasticsearch for Production
After installing Elasticsearch, you may want to configure it for production use by modifying the configuration files and optimizing it for your needs.
- Edit the Elasticsearch Configuration File
The main configuration file for Elasticsearch is located at /etc/elasticsearch/elasticsearch.yml
. Open this file to make necessary changes:
sudo nano /etc/elasticsearch/elasticsearch.yml
- Network Configuration
By default, Elasticsearch listens on localhost
. If you want to make Elasticsearch accessible from remote machines, modify the network.host
setting:
network.host: 0.0.0.0
Alternatively, you can specify the IP address of your server instead of 0.0.0.0
to limit access to specific networks.
- Cluster Configuration
Elasticsearch is designed to work in a cluster setup. If you are setting up a multi-node cluster, configure the cluster.name
and node.name
settings:
cluster.name: my-cluster node.name: node-1
If this is the first node in the cluster, set up discovery.seed_hosts
to include the initial nodes:
discovery.seed_hosts: ["node-1.example.com", "node-2.example.com"]
- Memory Settings
Elasticsearch is memory-intensive, so it’s important to configure the Java Virtual Machine (JVM) settings. You can modify the heap size by editing the jvm.options
file located in /etc/elasticsearch/jvm.options
:
sudo nano /etc/elasticsearch/jvm.options
Set the heap size for Elasticsearch (adjust as per your available memory):
-Xms2g -Xmx2g
This sets the minimum and maximum heap size to 2 GB. Adjust it based on the available memory of your server.
Enable Security
By default, Elasticsearch doesn’t have authentication enabled. However, for production environments, it’s recommended to enable security features such as authentication and encryption.
- Install X-Pack (Elastic Stack Security)
Elasticsearch comes with a set of features known as X-Pack that provide security, monitoring, and alerting capabilities. To enable security features, follow the X-Pack documentation to install and configure it.
- Enable User Authentication
To enable security features like basic authentication, you need to edit the configuration file:
sudo nano /etc/elasticsearch/elasticsearch.yml
Add the following to enable security:
xpack.security.enabled: true
Then, set up users, roles, and passwords using the elasticsearch-users
tool.
Testing Elasticsearch
After configuring Elasticsearch, it’s time to test its functionality to ensure it’s working correctly.
- Verify Node and Cluster Health
You can check the health of the node and cluster by running the following commands:
curl -X GET "localhost:9200/_cat/health?v"
- Check Index Information
To verify that Elasticsearch can handle indexing, create a sample index and insert data:
curl -X PUT "localhost:9200/my_index"
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d '{"name": "sample document"}'
To retrieve the document:
curl -X GET "localhost:9200/my_index/_doc/1"
Conclusion
In this article, we covered how to configure Elasticsearch on Linux, from installation to basic configuration and testing. Elasticsearch is a powerful and scalable search and analytics engine, ideal for managing large datasets and delivering fast search capabilities.
By following these steps, you can install and configure Elasticsearch for optimal performance in a production environment, including enabling security, memory settings, and cluster configurations. With Elasticsearch running on your Linux server, you’re now equipped to handle complex search and analytics tasks for your applications.