ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ElasticSearch vs. OpenSearch
    DevOps 2025. 3. 23. 22:43
    728x90
    • Lucene은 검색 알고리즘의 엔진
    • Elasticsearch는 운영 가능한 분산 검색 서비스

    Lucene = 자동차 엔진
    Elasticsearch = 엔진 + 차체 + 운전석 + 자동 조향 + 내비게이션

     

    1. Lucene, Elasticsearch, OpenSearch 관계 요약

    계층 설명
    🔧 Lucene 검색 알고리즘을 제공하는 Java 라이브러리 (core engine)
    🚀 Elasticsearch Lucene 위에 구축된 분산 검색 & 분석 엔진 (REST API 제공)
    🌿 OpenSearch Elasticsearch의 오픈소스 포크(Fork). AWS가 주도

    관계:

    • Lucene은 "엔진" (문서 색인 및 검색 알고리즘 제공)
    • Elasticsearch / OpenSearch는 Lucene을 감싸서 분산 처리, API, 클러스터링 등을 제공하는 "서비스 레이어"

     

    2. Lucene이란?

    • Apache Lucene: Java로 만든 고성능 텍스트 검색 라이브러리
    • inverted index, tokenizer, analyzer, scoring 등 검색에 필요한 모든 로직 내장
    • 직접 쓰면 고성능이지만 사용이 매우 복잡함

    Elasticsearch, OpenSearch는 Lucene을 내부에서 엔진으로 사용

     

    3. Elasticsearch vs OpenSearch

    항목 Elasticsearch OpenSearch
    주도 기업 Elastic.co AWS (Amazon)
    라이선스 변경 2021년, SSPL로 변경 → 오픈소스 아님 Apache 2.0 (완전 오픈소스)
    포크 시점 OpenSearch는 7.10.2 버전에서 포크됨 7.10.2와 거의 동일
    라이선스 SSPL (비공식 오픈소스) Apache 2.0 (공식 오픈소스)
    Kibana 대체 Kibana OpenSearch Dashboards
    확장성/플러그인 일부 유료 대부분 오픈소스 (Alerting, SQL 등 포함)
    생태계 Elastic Stack (ELK) OpenSearch Stack
    상용 버전 Elastic Stack 유료 기능 존재 OpenSearch는 전부 오픈소스 (AWS 버전도 무료)
    클라우드 서비스 Elastic Cloud (유료) Amazon OpenSearch (AWS 관리형 서비스)

     

    왜 OpenSearch가 생겼을까?

    • Elastic이 Elasticsearch를 오픈소스에서 SSPL로 전환하며 클라우드 기업이 자유롭게 사용할 수 없게 됨
    • 이에 Amazon이 Elasticsearch 7.10.2 버전을 포크 → OpenSearch 생성
    • AWS 주도로 활발히 개발 중이며, 대부분 Elasticsearch와 호환됨

     

    API / 기능 비교

    기능 Elasticsearch OpenSearch
    검색 쿼리 DSL ✅ 동일 ✅ 동일
    Full-text 검색
    Kibana ❌ (대신 OpenSearch Dashboards)
    SQL 지원 ✅ 유료 일부 ✅ 무료 기본
    Alerting 유료 무료
    Machine Learning 유료 커뮤니티 ML 플러그인 (제한적)
    Anomaly Detection 유료 무료 기본 포함

    성능과 호환성

    • 단일 노드/소규모 클러스터에서는 성능 거의 동일
    • Elasticsearch 8.x 이후는 OpenSearch와 호환되지 않음 (API 차이 존재)
    • OpenSearch는 Elasticsearch 7.10.2 API까지 호환

     

    어떤 걸 선택해야 할까?

    상황 추천
    100% 오픈소스 원함 OpenSearch
    AWS에서 운영 예정 OpenSearch (Amazon OpenSearch Service 추천)
    Elastic Stack + 상용 기능 사용 중 Elasticsearch + 유료 옵션
    최신 Elasticsearch 기능 필요 Elasticsearch (8.x 이상)
    자체 호스팅, 비용 민감 OpenSearch (무료 + 전체 기능 포함)

    ✅ 요약

    항목 Elasticsearch OpenSearch
    Lucene 기반
    오픈소스 라이선스 ❌ (SSPL) ✅ (Apache 2.0)
    대체 UI Kibana OpenSearch Dashboards
    AWS 호환성 ✅ (Amazon 주도)
    최신 버전 8.x 이상 2.x, 3.x (AWS 관리형 기준)
    대표 사용처 ELK Stack, Elastic Cloud AWS, 자체 운영 검색 시스템

     

    🏢 Lucene을 직접 사용하는 기업 & 유즈케이스

    1️⃣ Apache Solr

    • Lucene을 직접 래핑한 검색 플랫폼
    • Lucene을 내부 엔진으로 직접 사용하면서 고급 기능 제공
    • Lucene을 직접 사용하는 가장 유명한 OSS 중 하나

    🧠 Solr도 REST API 제공하지만, Elasticsearch보다 Lucene과의 거리가 더 가까움

     

     

    2️⃣ LinkedIn

    • 과거에 Lucene 기반의 Galene 검색엔진을 자체 개발
    • Lucene을 커스터마이징해서 사용자 검색, 채용 공고 검색 등에 활용
    • Lucene의 검색 스코어링 및 커스터마이징을 적극 활용

    3️⃣ Twitter

    • 검색 인프라에 early on Lucene을 도입 (후에 Finagle + Elastic 등으로 확장)
    • 트윗 검색/트렌드 검색에서 직접 Lucene 기반 구성 실험

    4️⃣ Apple, Netflix 등 일부 빅테크

    • 내부적으로 Lucene을 경량 인덱싱 엔진으로 사용
    • 예: Spotlight(Apple), 검색 제안, 카탈로그 검색 등

    5️⃣ 임베디드 시스템, 모바일 앱, 데스크탑 앱

    • Elasticsearch는 너무 무겁기 때문에 Lucene을 직접 자바 앱에 포함
    • 예: IDE(인텔리제이), 오프라인 검색 기능이 있는 앱 등

    💡 실제 유즈케이스 예시

    유즈케이스 설명
    검색 제안 시스템 Lucene의 prefix query, fuzzy query 활용해 빠른 자동완성
    문서 색인기 PDF, HTML, Word 문서 인덱싱 & 검색
    개인용 검색 도구 개발자용 로컬 문서 검색 툴 등
    IDE 코드 검색 JetBrains IntelliJ는 Lucene 사용
    오프라인 데이터 검색 비즈니스 앱, 모바일 앱에서 Lucene 내장 활용

    ⚠️ Lucene 직접 사용의 단점

    항목 내용
    개발 복잡성 ↑ 직접 인덱스 생성, 분석기, 쿼리 파서 다 구현해야 함
    분산 처리 없음 Lucene은 단일 노드 기반. 분산 처리하려면 직접 구현해야 함
    모니터링/관리 불편 Elasticsearch처럼 시각화 도구(Kibana 등) 없음
    운영 난이도 안정성과 장애 대응 로직도 직접 구현해야 함

    ✅ 요약

     

    항목 설명
    Lucene은 검색의 "엔진" 역할 대부분 Elasticsearch/OpenSearch에서 내부적으로 사용
    직접 사용하는 사례 있음 Solr, LinkedIn, 일부 대기업, IDE 등
    사용 이유 고성능, 커스터마이징, 경량
    주의할 점 운영 복잡도와 개발 비용 증가
    728x90
Designed by Tistory.