Installation

Installing Elasticsearch

This guide covers various methods to install Elasticsearch on different operating systems. We'll use Elasticsearch 8.x, the latest stable version.

System Requirements

Before installing Elasticsearch, ensure your system meets these requirements:

  • Java: Elasticsearch includes a bundled version of OpenJDK
  • RAM: Minimum 4GB, recommended 8GB or more
  • Disk Space: At least 5GB free space
  • Operating System: 64-bit required

Installation Methods

1. Docker (Recommended for Development)

Docker is the easiest way to get started with Elasticsearch.

Single Node Setup

# Pull the Docker image
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.0

# Run Elasticsearch
docker run -d \
  --name elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=false" \
  docker.elastic.co/elasticsearch/elasticsearch:8.11.0

Docker Compose Setup

Create a docker-compose.yml file:

version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - elasticsearch_data:/usr/share/elasticsearch/data

volumes:
  elasticsearch_data:

Run with:

docker-compose up -d

2. Installing on macOS

Using Homebrew

# Add Elastic repository
brew tap elastic/tap

# Install Elasticsearch
brew install elastic/tap/elasticsearch-full

# Start Elasticsearch
brew services start elastic/tap/elasticsearch-full

# Or run in foreground
elasticsearch

Using Archive

# Download the latest version
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.0-darwin-x86_64.tar.gz

# Extract the archive
tar -xzf elasticsearch-8.11.0-darwin-x86_64.tar.gz

# Navigate to the directory
cd elasticsearch-8.11.0

# Start Elasticsearch
./bin/elasticsearch

3. Installing on Windows

Using Archive

  1. Download the Windows ZIP from: https://www.elastic.co/downloads/elasticsearch

  2. Extract the ZIP file to a directory (e.g., C:\elasticsearch)

  3. Open Command Prompt as Administrator and navigate to the bin directory:

cd C:\elasticsearch\elasticsearch-8.11.0\bin
  1. Start Elasticsearch:
elasticsearch.bat

Using MSI Installer

  1. Download the MSI installer from the official website
  2. Run the installer and follow the wizard
  3. Start Elasticsearch from Windows Services

4. Installing on Linux

Ubuntu/Debian

# Import the Elasticsearch PGP Key
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

# Add the repository
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

# Update and install
sudo apt-get update
sudo apt-get install elasticsearch

# Start Elasticsearch
sudo systemctl start elasticsearch

# Enable auto-start on boot
sudo systemctl enable elasticsearch

CentOS/RHEL/Fedora

# Import the GPG key
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# Add the repository
sudo cat > /etc/yum.repos.d/elasticsearch.repo << EOF
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

# Install Elasticsearch
sudo yum install elasticsearch

# Start Elasticsearch
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Using Archive (Any Linux)

# Download
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.0-linux-x86_64.tar.gz

# Extract
tar -xzf elasticsearch-8.11.0-linux-x86_64.tar.gz

# Navigate and start
cd elasticsearch-8.11.0/
./bin/elasticsearch

Initial Configuration

1. Disable Security (Development Only)

For development, you might want to disable security features:

Edit config/elasticsearch.yml:

xpack.security.enabled: false
xpack.security.enrollment.enabled: false

2. Memory Settings

Edit config/jvm.options to set heap size:

-Xms2g  # Minimum heap size
-Xmx2g  # Maximum heap size

3. Network Settings

To allow external connections, edit config/elasticsearch.yml:

network.host: 0.0.0.0
discovery.type: single-node  # For single node setup

Verify Installation

Once Elasticsearch is running, verify the installation:

# Check if Elasticsearch is running
curl -X GET "localhost:9200/"

You should see a response like:

{
  "name" : "your-node-name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "unique-cluster-id",
  "version" : {
    "number" : "8.11.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "hash-value",
    "build_date" : "2023-10-31",
    "build_snapshot" : false,
    "lucene_version" : "9.8.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

Kibana Installation (Optional)

Kibana is a visualization tool for Elasticsearch:

Docker

docker run -d \
  --name kibana \
  --link elasticsearch:elasticsearch \
  -p 5601:5601 \
  docker.elastic.co/kibana/kibana:8.11.0

Other Platforms

Follow similar steps as Elasticsearch, replacing "elasticsearch" with "kibana" in package names.

Common Installation Issues

1. Port Already in Use

If port 9200 is already in use:

# Find process using port
lsof -i :9200  # macOS/Linux
netstat -ano | findstr :9200  # Windows

# Change port in elasticsearch.yml
http.port: 9201

2. Insufficient Memory

If you get memory errors:

  • Increase system RAM
  • Reduce heap size in jvm.options
  • Close other applications

3. Permission Denied

On Linux/macOS:

# Fix permissions
sudo chown -R $USER:$USER /path/to/elasticsearch

4. Connection Refused

  • Check if Elasticsearch is running
  • Verify firewall settings
  • Check network.host configuration

Development Tools

1. curl (Command Line)

# Test with curl
curl -X GET "localhost:9200/_cat/health?v"

2. Postman

Download Postman for a GUI-based REST client.

3. Elasticsearch Head

Chrome extension for cluster visualization.

Production Considerations

For production deployments:

  1. Enable Security: Use X-Pack security features
  2. Multiple Nodes: Run at least 3 nodes for high availability
  3. Dedicated Masters: Use dedicated master nodes
  4. Monitoring: Set up monitoring with Elastic Stack
  5. Backups: Configure snapshot and restore

Next Steps

After successful installation:

  1. Learn basic CRUD operations
  2. Understand mappings and data types
  3. Explore search capabilities
  4. Practice with aggregations

Your Elasticsearch instance is now ready for use! In the next section, we'll start working with data.