본문 바로가기
카테고리 없음

Elasticsearch에서 애널라이저(Analyzer)란?

by 개미가되고싶은사람 2025. 6. 24.

애널라이저(Analyzer)란?

Elasticsearch에서 text 타입의 데이터가 인덱싱될 때, 검색 효율성과 정확도를  높이기 위해 원본 텍스트를 분석하여 검색 가능한 작은 단위인 '토큰(Token)'으로 변환하는 일련의 과정을 거치는데, 이 역할을 수행하기 전에 애널라이저(Analyzer)라는 기능을 수행합니다. 애널라이저는 크게 캐릭터 필터(Character Filter), 토크나이저(Tokenizer), 토큰 필터(Token Filter)의 세 가지 구성 요소로 이루어져 있어 텍스트 정규화, 단어 분리, 불용어 제거, 어간 추출 등 다양한 전처리 작업을 수행함으로써 사용자가 입력한 쿼리와 인덱싱된 도큐먼트 간의 매칭 정확도를 향상시킵니다.

 

 

1. 캐릭터 필터(Character Filter)

Elasticsearch의 Character Filter는 Text를 토큰으로 변환하기 전에 문자열을 다듬는 역할을 합니다. 이 필터는 원본 문서의 내용을 변경하여 저장하는 것이 아니라, 역인덱스(inverted index)에 저장될 토큰을 생성하기 위해 문자열을 다듬는 용도로만 사용됩니다. 즉, 원본 데이터는 변경되지 않고 그대로  필드에 보존되며, 토큰 생성에만 Character Filter가 적용됩니다.

  • HTML 태그 제거
  • 특수 문자 치환 (& → and 등)
  • 기호 정규화 (® → 빈칸 또는 일반 문자)

2. 토크나이저(Tokenizer)

캐릭터 필터는 거친 Text를 토큰 단위로 분리합니다.

  • "Apple 아이폰 16 Pro" → ["Apple", "아이폰", "16", "Pro"]
  • 기본 설정인 standard 토크 나이저는 공백 또는 [, . ! ?]와 같은 문장 부호를 기준으로 분리

3. 토큰 필터(Token Filter)

토큰 필터는 잘린 토큰을 최종적으로 다듬는 역할을 합니다.

  • Lowercase Filter: 모든 토큰을 소문자로 변환
    → "Apple" → "apple"
  • Stop Filter: a, is, the와 같은 불용어(stopwords)를 제거
    → 불필요한 단어를 제외해 검색 정확도 향상
  • Stemmer Filter: running, runs, ran 등을 공통된 형태인 run으로 변환
    → 시제나 복수형 등 형태가 달라도 의미는 같게 분석

Elasticsearch는 각 필터는 여러 종류의 필터가 존재합니다. 이 중 캐릭터 필터와 토큰 필터는 여러 개를 체인처럼 연결하여 적용할 수 있습니다.

 

 

기본값으로 설정되어 있는 애널라이저

Elasticsearch에는 다양한 애널라이저(analyzer)가 있으며, 그중 기본값은 Standard Analyzer입니다. Standard Analyzer는 Character Filter를 별도로 적용하지 않으며, Tokenizer는 Standard Tokenizer가 설정되어 있어 문장을 공백이나 문장 부호 등을 기준으로 단어 단위로 분리합니다. Token Filter로는 Lowercase Filter가 적용되어 모든 단어를 소문자로 변환함으로써 대소문자 구분 없는 검색이 가능하게 합니다. 

https://mkonda007.medium.com/elasticsearch-in-action-standard-text-analyzer-87d4164e412e

 

 

그럼 검색어는 왜 대문자로 검색해도 결과가 나올까?

도큐먼트 생성 시 애널라이저가 적용되어 역인덱스가 구축되는 과정은 이제 이해가 되셨을 텐데, 이때 역인덱스에 저장된 영어 단어들이 lowercase 토큰 필터에 의해 모두 소문자로 변환되어 있을지라도, 사용자가 대문자를 포함하여 입력하더라도 정확한 검색 결과가 도출되는 이유는 바로 검색어 문자열 또한 애널라이저를 거쳐 토큰화되기 때문입니다. 이렇게 생성된 검색어 토큰들이 역인덱스에 저장된 도큐먼트 토큰들과 비교되어 관련성 점수(score)가 계산되고, 이 점수가 높은 순서대로 최종 검색 결과가 사용자에게 제공됩니다.

 

 

참고자료

https://mkonda007.medium.com/elasticsearch-in-action-standard-text-analyzer-87d4164e412e

 

Elasticsearch in Action: Standard Text Analyzer

The excerpts are taken from my book Elasticsearch in Action, Second Edition. The code is available in my GitHub repository. You can find…

mkonda007.medium.com

https://ssyoni.tistory.com/38

 

[ElasticSearch] 엘라스틱서치(3) - inverted index, analyzer

'기초부터 다지는 ElasticSearch 운영 노하우' 책을 읽고 정리한 내용입니다. inverted index 엘라스틱서치의 검색엔진을 활용하면 검색이 빠른 이유는 무엇일까? 바로 엘라스틱 서치는 인덱스를 구성할

ssyoni.tistory.com

https://www.elastic.co/docs/reference/text-analysis/analyzer-reference

 

Analyzer reference | Reference

Elasticsearch ships with a wide range of built-in analyzers, which can be used in any index without further configuration: If you do not find an analyzer...

www.elastic.co