본문 바로가기
BackEnd/개발

[개발] Docker Compose로 검색용 OpenSearch 띄우기

by 경험의 가치 2024. 11. 6.

 

기본적으로 Docker가 설치되있는 환경이란 가정이다.

 

OpenSearch는 AWS와 Elastic은 라이선스 문제로 인해 싸웠고 (내용은 AWS가 오픈 소스 코드 기여를 별로 안하면서 ELK를 가져다가 금전적인 이득을 많이 취하고 있다는 내용), 그 결과 AWS는 ElasticSearch 7.10.2 버전을 끝으로 독립적인 프로젝트인 OpenSearch를 시작했다. 이후 Elastic은 Elasticsearch를 8.x 버전으로 발전시키며 자체적으로 개발을 이어가고 있고, AWS는 OpenSearch를 별도로 유지 및 발전시켜왔다.

 

따라서, AWS OpenSearch(ElasticSearch)같은 AWS 자체 관리 서비스로 Elastic Search를 운용할 경우, 7.10.2까지만 쓸 수 있다. 그런데, Spring Boot 3.x 버전의 ElasticSearch Client랑 Elastic Search 7.10.x 버전이 호완이 되지 않는다. 따라서, Spring 3.x 버전 사용시, AWS 관리형을 사용할 경우 어쩔 수 없이 OpenSearch를 사용해야된다.

 

사실 OpenSearch가 ElasticSearch에서 분기하여 만들어진 것이기 때문에 사용법이나 호완성이나 거의 동일하다. 

 

어쨋든 많이들 검색 성능 개선, 오타 검색어 보정, 자동 검색어 완성을 위해 Elastic Search를 활용한다. 그래서 검색용으로 OpenSearch를 구현했을 때, 테스트를 위해서 local에 띄워야 하는데, 이때 Docker Compose로 띄우면 편하다. 실제 공식 문서에서도 이 방법을 권하고 있다.

 

 

Docker

Docker

opensearch.org

 

아래 Docker Compose 파일을 실행시켜주면 된다. 비밀번호 부분만 적절히 바꿔주면 된다.

참고로 여기서 OpenSearch Dash Board가 ELK에서 Kibana에 대응되는 것이다.

 

아래 Compose를 실행 후, http://localhost:5601에 접속하면 모니터링 GUI에 접속할 수 있다. ID는 admin, 비밀번호는 앞서 설정한 비밀번호를 설정하면 된다.

version: '3'
services:
  opensearch:
    image: opensearchproject/opensearch:2.15.0
    container_name: opensearch
    environment:
      - discovery.type=single-node
      - OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m
      - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${YOUR_PASSWORD}
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9200:9200"
      - "9600:9600"
    networks:
      - opensearch-net

  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:2.15.0
    container_name: opensearch-dashboards
    ports:
      - "5601:5601"
    environment:
      - OPENSEARCH_HOSTS=["https://opensearch:9200"]
      - OPENSEARCH_SSL_VERIFICATIONMODE=none
    networks:
      - opensearch-net

networks:
  opensearch-net:
    driver: bridge

'BackEnd > 개발' 카테고리의 다른 글

[개발] NGINX 기초  (0) 2024.11.12
[개발] Nginx 환경변수 사용 방법  (0) 2024.05.08
[개발] 채팅 구현에 대한 고찰  (0) 2024.04.30