Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document provides step-by-step instructions to set up Elasticsearch on Linux and Windows, along with common operations such as creating an index, syncing data, and searching data.

1. Prerequisites

Common Requirements

Overview

The Elasticsearch implementation provides a high-performance search solution for beneficiary data. It enables fast, fuzzy, and flexible searching across millions of beneficiary records with sub-second response times.

Key Features

  • Lightning-fast search: Sub-second queries even with millions of records
  • Fuzzy matching: Find beneficiaries even with spelling mistakes
  • Flexible filtering: Search by multiple criteria simultaneously
  • Real-time sync: Automatic indexing when beneficiaries are created/updated
  • Scalable: Handles growing data volumes efficiently

Why Elasticsearch?

Business Problem

The existing database search was experiencing performance issues:

  • Slow queries: Complex searches taking 5-15 seconds on large datasets
  • Limited fuzzy matching: Exact matches required, causing missed results
  • Database load: Heavy search queries impacting transactional operations
  • Poor user experience: Users waiting too long for search results

Image AddedSearch FlowImage Added

Prerequisites

  • Java (Elasticsearch 8.x comes with bundled JDK – no separate Java install required)

  • Minimum 4 GB RAM (recommended)

  • Database with beneficiary data
  • Open ports: 9200 (HTTP), 9300 (Transport)

...

Elasticsearch Installation

...

Linux Setup (Ubuntu / RHEL)

Step 1: Download Elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.x.x-linux-x86_64.tar.gz

Step 2: Extract the Archive

tar -xzf elasticsearch-8.x.x-linux-x86_64.tar.gz
cd elasticsearch-8.x.x

Step 3: Configure Elasticsearch

Edit config/elasticsearch.yml

cluster.name: elasticsearch-cluster
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

Step 4: Start Elasticsearch

./bin/elasticsearch

Step 5: Verify Installation

curl http://localhost:9200

Windows Setup

Step 1: Download Elasticsearch

  • Download the Windows ZIP from Elastic official site

Step 2: Extract ZIP File

  • Extract to a directory (example: C:\elasticsearch)

Step 3: Configure Elasticsearch

Edit config\elasticsearch.yml

cluster.name: elasticsearch-cluster
node.name: node-1
network.host: localhost
http.port: 9200
discovery.type: single-node

Step 4: Start Elasticsearch

bin\elasticsearch.bat

Step 5: Verify Installation

Open browser or Postman:

http://localhost:9200

Docker Setup

Step 1: Create docker-compose.yml

version: '3.8'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    container_name: amrit-elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=false
      - ELASTIC_PASSWORD=Password
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - es-data:/usr/share/elasticsearch/data
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    container_name: amrit-kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=elastic
      - ELASTICSEARCH_PASSWORD=Password
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - elastic

volumes:
  es-data:
    driver: local

networks:
  elastic:
    driver: bridge

Step 2: Start Elasticsearch Container

docker compose up -d
Step-3: Verify Elasticsearch is running
curl -u elastic:Password http://localhost:9200