프로젝트/Reviewing(리뷰잉)

강의 추천/검색 기능 구현 1탄 - Openearch와 Elasticsearch

2025. 2. 17. 23:55
목차
  1. Elasticsearch란?
  2. 특징
  3. 단점
  4. OpenSearch란?
  5. 기본 구조

Reviewing(리뷰잉) 프로젝트를 진행하면서 강의 추천 기능을 구현했는데 이때 AWS의 OpenSearch Service를 사용했다. 

OpenSearch와 Elasticsearch의 비교부터 공부 및 구현 내용을 정리할 예정이다.

Elasticsearch란?

Elasticsearch는 Apache Lucene에 구축되어 배포된 검색 및 분석 엔진이다.

검색 엔진 : 원하는 정보를 검색해 주는 시스템
분석 엔진 : 데이터를 분석해 주는 시스템
Apache Lucene : Java 기반 정보 검색 라이브러리이며 더그 커팅(하둡 개발자)에 의해 개발되었다. 
                               아파치 소프트웨어 재단에 의해 지원되며 아파치 라이선스하에 배포된다. 

 

Elasticsearch를 통해 방대한 양의 데이터를 신속하게(거의 실시간)저장, 검색, 분석을 수행할 수 있다.

Elasticsearch는 검색 엔진으로 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana) 스택으로 사용되기도 한다.

특징

  • 고가용성 : 분산 구조(노드, Replica 샤드)를 통해 서비스 중단 없이 이용 가능
  • Scale Out : 샤드를 통해 규모가 수평적으로 늘어날 수 있다.
  • Restful API : GET,PUT,POST,DELETE의 API를 제공하여 다양한 플랫폼에서 쉽게 접근 가능
  • Schema Free : Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없음
  • 실시간 검색 : 거의 실시간 검색을 제공하는 것 처럼 빠른 처리
  • 역색인 : 특정 단어를 찾을때 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있다.

단점

  • 완전한 실시간 X (Near real-time) : Elasticsearch는 데이터 저장 시점에 해당 데이터를 인덱싱한다.
  • 트랜잭션과 롤백 기능이 없다. : 전체적인 클러스터의 성능 향상을 위해서 시스템적으로 비용 소모가 큰 롤백과 트랜잭션을 지원하지 않는다.
  • 데이터 삭제 및 수정의 비효율성 : 실시간 검색과 분석을 위해 설계되었기 때문에 데이터 삭제나 수정 작업은 상대적으로 비효율적이다.(Elasticsearch 에서의 업데이트는 기존 문서를 삭제하고 다시 삽입하는 방식)

OpenSearch란?

Apache 2.0의 라이센스였던 Elasticsearch가 7.10 버전 이후부터 SSPL 라이선스로 변경하자 모든 코드를 오픈해야했던 AWS에서 Elasticsearch 7.10 (완전 무료 오픈소스)를 기반으로 포크하여 만든 프로젝트이다. 

 

Elasticsearch와 OpenSearch 모두 직접 구축 가능한 오픈 소스 방식과 클라우드 서비스 제공 방식을 가지고 있다.

기본 구조

클러스터, 노드, 인덱스, 도큐먼트, 샤드로 구성되어있다.

 

클러스터 (Cluster)

독립된 ElasticSearch 시스템 환경. 1개 이상의 노드로 구성

서로 다른 클러스터 사이에서는 데이터 접근이나 복제 등의 작업이 제한된다.

 

노드 (Node)

실행중인 ElasticSearch 시스템 프로세스

각 노드는 Elasticsearch 서버 인스턴스를 나타내며, 클러스터에 속한 모든 노드는 서로 통신한다.

 

인덱스 (Index)

도큐먼트의 논리적 집합. 1개 이상의 샤드로 구성

RDBMS에서 table의 역할

각 인덱스는 하나 이상의 샤드로 나뉘며 샤드는 데이터의 부분 집합을 나타냅니다.

 

도큐먼트 (Document)

저장된 단일 데이터 단위 

데이터의 최소 단위이며 RDBMS에서의 row와 비슷하다.

 

샤드 (Shard)

색인, 검색을 진행하는 작업 단위

각 shard는 물리적 노드들에 나뉘어서 저장된다.

Shard는 두 종류로 나뉜다. (Primary shard, Replica shard)

복제본을 통해 데이터의 안정성과 가용성을 보장

  • Primary shard: 모든 Document들은 하나의 primary shard에 저장된다. Primary shard의 기본 개수는 5개이다. 처음 인덱스 생성 시점에서 설정 이후 변경 불가능
  • Replica shard: Primary shard의 복제본이다. 원본 데이터에 fault 발생시 복구하기 위해 사용된다 (fault tolerance). Replica shard의 기본 개수는 1개이다.

https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards

 

https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards

 

각 노드에 Primary shard와 Replica shard가 분산되어 들어간다. 

 

7.0 버전부터 Type 구조(여러 Document가 모여서 하나의 type을 이룬다. RDBMS에서의 table과 비슷)가 사라졌다.

 

참고 자료

https://velog.io/@msjeong97/Elasticsearch란

https://dabo-dev.tistory.com/7

https://min-nine.tistory.com/entry/Apache-Lucene-이란-아파치-루씬에-대한-학습

https://yuna-ninano.tistory.com/entry/엘라스틱서치-ElasticSearch란-개념-장단점-면접-질문

https://jiwondev.tistory.com/38

https://hstory0208.tistory.com/entry/ELK-ElasticSearch란-ELK란-장단점-RDB와-차이

https://velog.io/@jihun92/Elasticsearch-란-무엇인가

https://ayoung0073.tistory.com/entry/자료구조-색인Index-역색인Inverted-Index?category=1100790

https://www.youtube.com/watch?v=JqKDIg8fgd8&t=492s

'프로젝트 > Reviewing(리뷰잉)' 카테고리의 다른 글

강의 추천/검색 기능 구현 3탄 - Amazon OpenSearch Service 구축하기  (1) 2025.02.25
강의 추천/검색 기능 구현 2탄 - OpenAI Vector Embeddings API 사용법 (Java 실습)  (1) 2025.02.19
강의 리뷰 플랫폼 Reviewing(리뷰잉) 소개  (2) 2025.02.10
  1. Elasticsearch란?
  2. 특징
  3. 단점
  4. OpenSearch란?
  5. 기본 구조
'프로젝트/Reviewing(리뷰잉)' 카테고리의 다른 글
  • 강의 추천/검색 기능 구현 3탄 - Amazon OpenSearch Service 구축하기
  • 강의 추천/검색 기능 구현 2탄 - OpenAI Vector Embeddings API 사용법 (Java 실습)
  • 강의 리뷰 플랫폼 Reviewing(리뷰잉) 소개
노루스름한맛
노루스름한맛
노루스름한맛
이몸의 블로그
노루스름한맛
전체
오늘
어제
  • 분류 전체보기 (33)
    • 대외 활동 (1)
      • 구름톤 풀스택 1기 (0)
    • 프로젝트 (4)
      • Reviewing(리뷰잉) (4)
    • 알고리즘 문제 풀이 (21)
      • 프로그래머스 (17)
      • 백준 (4)
    • Spring (1)
    • JAVA (1)
    • React native (1)
    • CI,CD (2)
    • TIL & 일기 (2)
      • TIL (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 폰켓몬
  • 색종이만들기
  • 전화번호목록
  • 리뷰잉
  • 프로그래머스
  • 같은숫자는싫어
  • jenkins
  • elasticsearch
  • 더맵게
  • 프로그래머스카펫
  • Java
  • 백준색종이만들기
  • 전국장애비장애대학생창업경진대회
  • 백준
  • 최소직사각형
  • 카펫
  • 재귀함수
  • 프로그래머스더맵게
  • expogo
  • 프로그래머스단어변환
  • 게임맵최단거리
  • reviewing
  • OpenSearch
  • 프로그래머스폰켓몬
  • rosetta
  • embeddings
  • cicd

최근 댓글

최근 글

hELLO · Designed By 정상우.
노루스름한맛
강의 추천/검색 기능 구현 1탄 - Openearch와 Elasticsearch
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.