이전 강의에서 products의 name 필드값을 토큰(token)으로 분리해 역인덱스(Inverted Index)로 저장하는 과정을 살펴봤다. 이 과정에서 문자열(text)을 토큰으로 변환시켜주는 장치를 보고 **애널라이저(Analyzer)**라고 부른다.
POST /products/_create/1
{
"name": "Apple 2025 맥북 에어 13 M4 10코어"
}
POST /products/_create/2
{
"name": "Apple 2024 에어팟 4세대"
}
POST /products/_create/3
{
"name": "Apple 2024 아이패드 mini A17 Pro"
}
| 토큰(token) | 도큐먼트 id |
|---|---|
| Apple | [1, 2, 3] |
| 2025 | [1] |
| 맥북 | [1] |
| 에어 | [1] |
| 13 | [1] |
| M4 | [1] |
| 10코어 | [1] |
| 2024 | [2, 3] |
| 에어팟 | [2] |
| 4세대 | [2] |
| 아이패드 | [3] |
| mini | [3] |
| A17 | [3] |
| Pro | [3] |
그림으로 나타내면 다음과 같다.

이전에 간단하게 배울 때는 문자열을 단어 단위로 잘라서 토큰으로 만든다고만 배웠다. 사실은 문자열을 간단하게 단어 단위로만 자르는 게 아니라 **애널라이저(Anylyzer)**가 여러 가지의 작업을 거쳐서 토큰을 만들어낸다.
**애널라이저(Analyzer)**는 내부적으로 캐릭터 필터(character filter), 토크나이저(tokenizer), **토큰 필터(token filter)**라는 걸 활용해 문자열을 토큰으로 변환시킨다. 이 3가지의 개념에 대해 조금 더 자세히 알아보자.
**캐릭터 필터(character filter)**는 문자열을 토큰으로 자르기 전에 문자열을 다듬는 역할을 한다.
다양한 종류의 필터가 존재하며, 여러 개의 필터를 적용시킬 수 있다.
[예시]
html_strip 필터 적용 (HTML 태그를 제거)
<h1>아이폰 15 사용 후기</h1> → 아이폰 15 사용 후기
(mapping 필터, pattern replace 필터)