Skip to content

OpenSearch

JaewonLee edited this page Jul 29, 2024 · 20 revisions

OpenSearch 공식 링크

OpenSearch JAVA USER_GUIDE 공식 링크

OpenSearch Docker Image 공식 링크

OpenSearch Docker Image Version 링크

OpenSearch docker-compose 공식 링크

Note

AWS OpenSearch Service를 Docker Image로 통해 local 환경에서 구현

보안 플러그가 비활성화 되어 있습니다. Product 환경에 적용 x

OpenSearch 2.15 이미지를 기본으로 사용하며, Nori 한국어 형태소 분석기 플러그인을 자동으로 설치합니다.

개요

이 가이드는 Docker와 Docker Compose를 사용하여 OpenSearch 로컬 개발 환경을 설정하는 방법을 설명합니다. 이 설정은 OpenSearch와 OpenSearch Dashboards를 포함하며, 다양한 환경 변수와 플러그인 설정이 포함되어 있습니다. 또한 초기화 스크립트를 통해 데이터 인덱싱을 자동화합니다.

Local 구현?

  • 비용 절감: 실제 OpenSearch 클라우드 서비스는 높은 비용이 발생합니다. 테스트 및 개발 과정에서는 로컬에서 구현하면 비용을 절감할수 있습니다.
  • 환경 일관성: OpenSearch image를 활용하면 다른 개발자와 동일한 환경을 공유하기 좋습니다.
  • 단일 노드 클러스트 활용: 간편하게 테스트 환경을 구축할 수 있습니다.
  • 빠른 피드백, 네트워크 지연 x: 변경 사항을 즉시 확인할 수 있고, 네트워크 지연 없이 빠르게 작업이 가능합니다.

디렉토리 구조

현재 프로젝트는 다음과 같은 구조로 설계되어 있습니다.

project-root/
├── docker-compose.dev.yml
├── docker/
│   └── Dockerfile-opensearch
└── opensearch-init/
    ├── init-opensearch.sh
    ├── setup-opensearch.sh
    └── webtoon-mapping.json

주요 설정 설명

  • docker-compose.dev.yml: - opensearch-node1 서비스는 OpenSearch 인스턴스를 설정합니다. 다양한 환경 변수를 통해 메모리 설정, 노드 이름, 클러스터 이름 등을 지정할 수 있습니다.
    • opensearch-dashboards 서비스는 OpenSearch Dashboards를 설정합니다. 이는 OpenSearch 데이터를 시각화하고 관리하는 데 사용됩니다.
    • volumesnetworks를 사용하여 데이터 지속성과 네트워크 연결을 관리합니다.

  • Dockerfile-opensearch:
    • OpenSearch 2.15.0 이미지를 기본으로 사용하며, Nori 한국어 형태소 분석기 플러그인을 설치합니다.
    • 초기화 스크립트를 컨테이너에 복사하고 실행 권한을 설정합니다.

  • init-opensearch.sh:
    • OpenSearch가 준비될 때까지 대기한 후, 인덱스가 없으면 새로운 인덱스를 생성하고 매핑 설정을 적용합니다.
    • setup-opensearch.sh 스크립트를 실행하여 데이터를 인덱싱합니다.

  • setup-opensearch.sh:
    • 외부 API에서 웹툰 데이터를 가져와 OpenSearch인덱싱합니다.

  • webtoon-mapping.json:
    • 인덱스 설정 및 매핑을 정의하여 OpenSearch가 데이터를 올바르게 분석하고 저장할 수 있도록 합니다.

적용 방법

docker-compose -f docker-compose.dev.yml up --build 

(or)

docker-compose -f docker-compose.dev.yml up -d

성능 최적화

  • 적절한 JVM 힙 메모리를 조정하여 최적화합니다.
  • OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g # JVM 힙 메모리를 최대 4GB로 설정

기존 8GB 설정 시 image

4GB 설정 시 image

프로젝트 디렉토리 구조 및 파일 링크

프로젝트의 전체 디렉토리 구조는 다음 링크에서 확인할 수 있습니다: 프로젝트 디렉토리 구조

주요 파일 링크