[Elasticsearch] Elasticsearch

김민재·2025년 3월 7일
0

Elasticsearch

목록 보기
2/13

🔎 Elasticsearch란?

  • 대량의 데이터를 빠르게 검색하고 분석할 수 있는 분산 검색 엔진이다. Apache Lucene(무료 오픈 소스 검색 엔진 라이브러리) 라이브러리를 기반으로 하는 오픈 소스 검색 및 분석 엔진

  • 2010년에 출시하여 JSON 문서에 전체 텍스트 검색 기능을 제공하기 위한 분산형 Java 솔루션으로 설계되었다.

  • 다양한 소스에서 비정형 데이터 유형을 가져와 최적화된 언어 기반 검색을 위한 특수 형식으로 저장함으로써 확장성이 매우 뛰어난 검색 기능을 제공한다.

  • 기본적으로 JSON 문서를 저장하고, 인덱싱하여 검색하는 방식

    • 인덱싱: 데이터를 빠르게 검색할 수 있도록 색인을 생성하는 과정

🪂 Elasticsearch 작동법

  • JSON 문서 형식의 데이터를 LogstashAmazon Kinesis Data Firehose와 같은 수집 도구나 API를 사용해 Elasticsearch로 전송할 수 있다.

    • Logstash: 데이터 수집을 담당하는 오픈소스 도구
  • Elasticsearch API를 사용해 문서를 검색하고 조회할 수 있다.

  • Kibana를 통해 데이터를 시각화하고 대화식 대시보드를 구축할 수 있다.

🎯 Elasticsearch 특징

  1. 신속한 가치 실현: 간단한 REST API 기반, 간단한 HTTP 인터페이스를 제공하고 스키마 없는 JSON 문서를 사용해 다양한 사용 사례에서 쉽게 시작하고 빠르게 애플리케이션을 구축할 수 있다.

  2. 고성능: 분산 성질로 인해 대량의 볼륨의 데이터를 병렬로 처리할 수 있어 쿼리에 최고의 일치 항목을 빠르게 찾을 수 있다.

  3. 무료 도구 및 플러그인: Kibana가 통합되어 제공된다. Beats 및 Logstash와의 통합도 제공한다. 언어 분석기 및 제안자 등 다양한 오픈 소스 Elasticsearch 플러그인을 사용하여 애플리케이션에 풍부한 기능을 추가할 수 있다.

  4. 실시간에 가까운 운영: 데이터 읽기 및 쓰기와 같은 운영은 보통 1초도 안 걸린다. 덕분에 모니터링 및 이상 탐지와 같은 실시간에 가까운 사용 사례에 사용될 수도 있다.

  5. 다양한 언어 지원: Java, Python, PHP, JS, Ruby 등 지원된다.

  6. 풀텍스트 검색: 띄어쓰기, 형태소 분석(토큰화), 동의어 매칭 등이 가능함

    • EX) "엘라스틱서치 튜토리얼" 검색 -> "엘라스틱 튜토리얼" 유사 결과
  7. 다국어 지원 가능:

    • 영어 검색: 기본 Standard Analyzer 사용(공백 단위로 토큰화)
      ex) "HELLO WORLD" -> ["HELLO", "WORLD"]
    • 한국어 검색: Nori 분석기 사용
      ex) "서울에 갔다" -> ["서울", "가다"]

📤 Elasticsearch 주요 용도

  • 로그 분석(ELK 스택에서 사용됨)

    • ELK란? Elasticsearch Logstash Kiband의 줄임말로
    • Elasticsearch: 검색 & 분석 엔진
    • Logstash: 데이터 수집 & 변환
    • Kibana: 데이터 시각화
  • 자동완성 & 연관 검색어 기능

  • 대용량 데이터 검색 최적화

  • 데이터 시각화 활용

🛠 Elasticsearch vs RDBMS 비교

ElasticsearchRDBMS (MySQL, PostgreSQL 등)
데이터 저장 방식JSON 문서(Document) 기반테이블(Row & Column) 기반
검색 속도빠름 (역색인 사용)느림 (LIKE 검색 시 성능 저하)
검색 기능형태소 분석, 동의어 처리, 자동완성 지원기본 LIKE 검색, 정규식 검색
JOIN 기능지원 안 함 (Nested Document 활용)JOIN 지원
트랜잭션(ACID)일부만 지원 (정합성이 중요하면 보완 필요)강력한 트랜잭션 보장
확장성수평 확장 (Sharding & Clustering)주로 수직 확장 (Scale-up)
사용 목적대량의 데이터 검색 & 분석트랜잭션 기반 CRUD 처리
운영 난이도클러스터 관리 필요 (복잡)상대적으로 쉬움
데이터 실시간 반영Near Real-time (완전한 실시간 X)즉시 반영 가능
대표 사용 사례🔹 검색 엔진 (네이버, 구글) 🔹 로그 분석 (ELK Stack) 🔹 추천 검색어 & 자동완성🔹 은행 시스템 🔹 쇼핑몰 결제 시스템 🔹 CRUD 기반 서비스
  • Elasticsearch는 대량 데이터 검색에 유리하다.
  • RDBMS는 정합성이 중요한 트랜잭션 처리에 유리하다.
profile
개발 경험치 쌓는 곳

0개의 댓글