Versions Compared

Key

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

...

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

...

Business Problem

The existing PostgreSQL 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)

  • Open ports: 9200 (HTTP), 9300 (Transport)

...

Step 1: Create docker-compose.yml

version: '3.8'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.1211.0
    container_name: amrit-elasticsearch
    environment:
      - node.name=es-amrit
      - cluster.name=amrit-cluster
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - ELASTIC_PASSWORD=Password
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - es-data:/usr/share/elasticsearch/data- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ports:
      - "9200:9200"
      - "9300:9300"
    networksvolumes:
      - app-network
    healthcheck:
      test: ["CMD-SHELL", "curl -s http://localhost:9200 >/dev/null || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60ses-data:/usr/share/elasticsearch/data
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:8.1211.0
    container_name: amrit-kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=elastic
      - ELASTICSEARCH_PASSWORD=Password
      - SERVER_HOST=0.0.0.0
    ports:
      - "5601:5601"
    networks:
      - app-network
    depends_on:
      - elasticsearch:
        condition: service_healthynetworks:
    healthcheck  - elastic

volumes:
      test: ["CMD-SHELL", "curl -s http://localhost:5601/api/status >/dev/null || exit 1"]es-data:
      intervaldriver: 30s
      timeout: 10s
      retries: 5local

networks:
  elastic:
      start_period: 60sdriver: bridge

Step 2: Start Elasticsearch Container

...