Elastic Search

이상억·2025년 2월 26일

Elastic Search

목록 보기
1/1

엘라스틱 서치의 동작 원리 개요

엘라스틱 서치는 방대한 양의 문서들 중 사용자가 입력한 검색어에 대해 빠르고 정확한 검색 결과를 제공하기 위해 두 가지 주요 단계를 지남. 이 두 단계는 검색의 성능과 정확도를 결정짓는 핵심 요소

  • 문서를 기반으로 인덱스 생성 (Indexing)
  • 생성된 인덱스를 바탕으로 검색 처리 (Searching)

인덱스 생성 (Indexing)

인덱스는 단순히 문서의 내용을 빠르게 찾기 위한 검색용 테이블. 단순 테이블 생성이 아니라 여러 복잡한 전처리 과정을 거쳐 효율적인 검색 구조를 만드는 것을 의미.

전처리 (Pre-processing)

  • 문서 정제
    • 문서 내 불필요한 기호, HTML 태그, 특수문자 등을 제거.
  • 정규화
    • 예를 들어, 영어의 경우 대문자를 소문자로 변환하여 “Apple”과 “apple”을 동일하게 인식하게 함.
  • 불용어 제거:
    • 검색 시 의미 없는 단어(예: “the”, “is” 등)를 제거하여 분석 효율 향상.

형태소 분석 (Tokenization & Morphological Analysis)

  • 토큰화

    • 문장을 단어 혹은 의미 단위(토큰)로 분리.
    • 예를 들어, “운동화”가 “운”과 “동화”로 분리될 수 있는 경우, 이를 올바르게 분석하기 위한 커스텀 분석기가 필요.
  • 어간 추출 및 표제어 추출

    • 단어의 어미, 접미사를 제거하여 기본 형태로 변환.
    • 이 과정은 검색 시 다양한 형태의 단어를 하나의 토큰으로 매칭하게 함.

후처리 (Post-processing)

  • 표준화

    • 대소문자 변환 외에도, 숫자나 특수문자 등 특정 패턴을 표준화하여 검색 결과의 일관성을 유지.
  • 동의어 처리

    • “노트북”과 “랩탑” 같이 의미가 동일한 단어를 동일하게 인식할 수 있도록 설정.
  • 필터링

    • 불필요한 토큰을 제거하거나 중요도를 조정하여 검색 시 가중치를 부여할 수 있음.

주요 포인트

동일한 문서라도 “전처리 → 형태소 분석 → 후처리” 과정을 어떻게 커스텀하느냐에 따라, 최종 생성된 인덱스의 내용이 달라지고 이는 검색 결과에 큰 영향을 미침.


검색 처리 (Searching)

인덱스 기반 검색

  • 빠른 조회

    • 생성된 인덱스를 기반으로 검색어가 포함된 토큰들을 빠르게 찾아냄. 이 때, 역인덱스(Inverted Index) 구조가 사용되는데, 이는 각 토큰이 포함된 문서들의 목록을 저장하여 빠른 검색이 가능하게 함.
  • 정확한 매칭

    • 검색어에 대해 전처리 및 형태소 분석이 동일하게 적용되어야, 사용자가 입력한 검색어와 인덱스가 동일한 규칙으로 변환되어 정확한 매칭이 이루어짐.

검색 결과 가중치와 순위

  • TF-IDF 및 BM25:
    • 단순히 검색어의 포함 여부만 확인하는 것이 아니라, 문서 내 검색어의 빈도수와 전체 문서 집합에서의 중요도를 고려해 점수를 산출.
  • 커스텀 스코어링
    • 사용자가 정의한 비즈니스 로직에 따라 검색 결과의 우선순위를 조정할 수 있음.

엘라스틱 서치 vs. 기존 DB의 FTS

일반적인 데이터베이스(MongoDB, MySQL 등)도 기본적인 전체 텍스트 검색(FTS) 기능을 제공하지만,
엘라스틱 서치는 전처리, 형태소 분석, 후처리의 과정을 세밀하게 커스터마이징할 수 있다는 점에서 차별화.

  • 유연한 분석 체인:
    • 각 단계별 설정을 통해, 도메인 특화 검색어 처리 및 정확도 향상이 가능.
  • 확장성 및 분산처리
    • 대량의 데이터를 실시간으로 처리하고 검색할 수 있도록 분산 클러스터 환경을 제공.
profile
이상억

0개의 댓글