DB와는 다른 검색 엔진, Elasticsearch 이해하기

dev.hyjang·2025년 9월 2일

Elasticsearch 란?

  • 엘라스틱서치는 Apache Lucene 기반의 오픈소스 분산 검색 및 분석 엔진입니다.
  • 방대한 데이터를 빠르고 거의 실시간으로 저장하고 검색하고, 효과적으로 분석, 시각화할 수 있습니다.
  • 엘라스틱서치는 데이터베이스가 아니라 문서 기반 데이터를 저장하고 이를 기반으로 아주 빠르게 검색할 수 있도록 설계된 시스템입니다.
  • 기존 관계형 데이터베이스(RDB)가 복잡한 쿼리로 인해 검색 속도가 느려지는 문제를 해결하기 위해 전문 검색 기능이 특화되어 있습니다.
  • 데이터베이스는 구조적 데이터 저장 / 관계 연산에 강하지만, 엘라스틱서치는 비정형 데이터 저장 / 검색과 분석에 강한 특징이 있습니다.

Elasticsearch 특징

1. 분산 검색 엔진

  • 엘라스틱서치는 분산형 시스템(구조)로 설계되어 있습니다.
  • 여러 서버(노드)에 데이터를 분산해 저장하거나 검색하여, 확장성과 고가용성을 제공합니다.
  • 데이터를 여러 서버에 분산하여 저장하고 처리하기 때문에, 단일 서버의 한계를 뛰어넘어 대규모 데이터를 처리할 수 있고, 장애가 발생해도 시스템이 멈추지 않았기 때문에 안정적인 서비스를 제공할 수 있습니다.

2. 역색인 구조

  • SQL과 달리 색인된 데이터에서 효율적으로 문서를 찾을 수 있는 방식(inverted index)으로 동작합니다.
  • 일반적인 데이터베이스는 문서(document)를 기준으로 단어를 찾아야 해서 느리지만, 역색인은 단어를 기준으로 그 단어가 포함된 문서를 검색합니다.
  • 이러한 검색 방법을 통해 엘라스틱서치의 검색 속도가 매우 빠를 수 있습니다.
  • 예시) "자바 스프링부트" 라는 문서가 있으면 역색인은 다음과 같이 구성됩니다.
    • "자바" : [문서1, 문서2]
    • "스프링부트" " [문서1, 문서3]
  • 이렇게 미리 단어별로 문서를 매핑해두면, "자바"를 검색할 때 전체 문서를 훑어보지 않고, 바로 해당 문서 목록을 찾아내기 때문에 검색 속도가 매우 빨라집니다.

3. RESTful API 제공

  • 데이터를 저장(CREATE), 검색(READ), 수정(UPDATE), 삭제(DELETE) 등의 작업을 HTTP 기반의 API로 할 수 있습니다.

4. 모든 데이터 지원

  • 정형 및 비정형 데이터(텍스트, 숫자, 위치 등)를 인덱싱하고 분석할 수 있습니다.

5. 실시간성

  • Near Real Time으로 데이터를 거의 즉시 검색·분석할 수 있습니다.

6. ELK 스택의 핵심

  • Logstash(수집), Elasticsearch(검색/분석), Kibana(시각화)로 이루어진 ELK 스택에서 주로 사용됩니다.

Elasticsearch 핵심 개념

Index (인덱스) : 관계형 DB의 Database랑 비슷. 데이터를 모아두는 공간.

Document (문서) : DB의 Row에 해당. JSON 형태로 저장됨.

Field (필드) : DB의 Column처럼 각 문서의 속성.

예시) 뉴스 기사 데이터

{
  "title": "스프링부트에 엘라스틱서치 도입",
  "author": "홍길동",
  "content": "오늘부터 우리 프로젝트에 엘라스틱서치를 적용한다.",
  "published_date": "2025-09-02"
}
  • 이 JSON 하나가 Document
  • 여러 개가 모이면 하나의 Index (예: "news")

RDBMS와 Elasticsearch의 차이점

구분관계형 데이터베이스(DB, MySQL/PostgreSQL 등)Elasticsearch
데이터 구조테이블(Table), 행(Row), 열(Column)인덱스(Index), 문서(Document), 필드(Field)
데이터 형식정형 데이터(숫자, 문자열, 날짜 등)JSON 기반 문서 (정형 + 반정형 + 텍스트)
저장 목적데이터의 무결성, 트랜잭션 관리, 관계형 모델검색 속도, 텍스트 분석, 실시간 분석
쿼리 언어SQLDSL(Query DSL, JSON 기반 쿼리)
검색 기능정확한 값 조회, 범위 검색, JOIN풀텍스트 검색, 유사도 검색, 점수 기반 랭킹
성능 특화다중 트랜잭션 처리, 정합성 보장대규모 데이터의 빠른 검색과 분석
트랜잭션(ACID)지원 (강력한 일관성)제한적 (최종적 일관성, 분산 처리 중심)
확장성수직 확장(서버 스펙 업그레이드 중심)수평 확장(노드 추가로 클러스터 확장)
활용 예시주문/결제 시스템, 고객 관리, 금융 거래상품 검색, 로그 수집·분석, 추천 시스템

데이터 저장 구조

  • RDBMS는 테이블, 열(컬럼), 행(로우), 스키마에 기반해서 데이터를 정형화하여 저장합니다.
  • 엘라스틱서치는 JSON 문서 형태로 데이터를 저장하며, 필드와 구조가 자유롭고, 스키마가 유연합니다.

검색 방식

  • RDBMS는 SQL 쿼리와 전통적인 B-Tree, 해시 인덱스 등을 사용하여 컬럼 값 기반 조회에 최적화되어 있습니다.
  • 엘라스틱서치는 역색인(inverted index) 구조 및 텍스트 분석 기반의 검색을 기본으로 하여, 대규모 텍스트 및 비정형 데이터의 빠른 '키워드', 'Full-text' 검색에 매우 강점을 가집니다.

확장성과 처리 성능

  • RDBMS는 수직 확장(CPU, 메모리 업그레이드)에 기반하며, 분산과 대용량 처리에 한계가 있을 수 있습니다.
  • 엘라스틱서치는 분산형 아키텍처이므로, 수평 확장(노드 추가)을 통해 대용량 데이터를 빠르고 효율적으로 관리할 수 있습니다.

트랜잭션 및 데이터 일관성

  • RDBMS는 ACID(Atomicity, Consistency, Isolation, Durability) 성질을 갖추고 있어 트랜잭션과 데이터 무결성, 복잡한 조인과 관리에 강합니다.
  • 엘라스틱서치는 트랜잭션 처리, 롤백, 일관성이 약하거나 제공되지 않으며, 검색과 집계에 특화되어 있습니다.

활용 및 목적

  • RDBMS: 비즈니스·업무 시스템에서 정형 데이터 관리와 복잡한 관계 처리, 데이터의 정확성과 안정성이 반드시 필요한 경우 사용합니다.
  • 엘라스틱서치: 로그, 텍스트, 다양한 형태의 비정형 데이터에 대해 빠른 검색·집계·분석이 필요할 때 적합합니다.

DB vs Elasticsearch 예시

DB 검색

SELECT * FROM news WHERE content LIKE '%엘라스틱 서치%';
  • 단순한 LIKE 매칭만 가능
  • 테이블 전체를 스캔해야 하므로 시간이 오래 걸림

엘라스틱서치 검색

{
  "query": {
    "match": {
      "content": "엘라스틱"
    }
  }
}
  • 미리 생성된 역색인에서 "엘라스틱"과 "서치"라는 단어가 포함된 모든 문서 검색 가능
  • 형태소 분석, 유사어 검색, 점수(관련도)순 정렬까지 가능
  • 오타 보정 및 유사어 제안 기능도 쉽게 구현 가능

Elasticsearch의 활용

위와 같은 특장점을 가지고 있기에 엘라스틱서치는 검색 성능과 확장성, 실시간 분석 기능 때문에 많이 사용되고 있습니다.

  • 검색 기능: 쇼핑몰 상품 검색, 블로그/뉴스 검색
  • 로그/모니터링: 서버 로그, 사용자 이벤트 데이터 (보통 ELK Stack: Elasticsearch + Logstash + Kibana)
  • 실시간 분석: 유저 행동 데이터, 클릭/조회수 통계
  • 쇼핑몰 검색 기능: 고객이 상품 이름이나 설명을 자유롭게 검색 가능
  • 로그 분석: 서버 로그 데이터를 실시간으로 수집·검색
  • 위치 기반 서비스: 지도/위치 데이터에 대한 검색 및 분석
  • 대규모 데이터 분석: 수백만 건의 데이터에 대한 빠른 탐색과 집계.

내용 심화 참고
https://velog.io/@big9810/%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98

profile
낭만감자

0개의 댓글