데이터 색인과 텍스트 분석 Part.2
Elasticsearch.06 데이터 색인과 텍스트 분석 Part.1 - 역인덱스, 텍스트 분석, 애널라이저
Elasticsearch
의 역인덱스 과정은 Analyzer
애널라이저를 통해서 처리된다.
애널라이저는 다음과 같은 구성으로 이뤄지고, 각 역할에 대해 자세히 살펴보자.
Character Filter
캐릭터 필터
Tokenizer
토크나이저
Token Filter
토큰 필터
Stemming
형태소 분서
Elasticsearch
는 텍스트 분석을 하기 위한 Analyzer
애널라이저를 조합하고,
그 동작을 확인할 수 있는 API
와 기능을 제공한다.
_analyze
API
term
Query
- Custom Analyzer
_termvectors
API
_analyze
API
_analyze
API 를 활용하면 Analyzer
애널라이저의 동작을 확인할 수 있다.
_analyze
API 요청에 입력된 토크나이저 와 토큰 필터 를 기반으로 텍스트 분석된 결과를 확인할 수 있다.
tokenizer
는 토크나이저로 1
개만 입력, filter
는 토큰필터로 N
개 입력 가능하다.
text
로 입력된 요청 문장은 token
으로 분리되어 응답 정보에 포함된다.
Request
Response
등록된 Analyzer
직접 활용한 _analyze
API
- 위와 같이 토크나이저 와 토큰필터 를 직접 입력 지정하여 할 수도 있지만,
Elasticsearch
에서 이미 등록된 애널라이저 를 이용하면 바로 사용 가능하다.
Request
Response
Index
인덱스에 Analyzer
적용
- 인덱스 에도
mappings
설정을 통해 애널라이저 를 적용할 수 있다.
analyzer
요청 정보에 사용하고자 하는 애널라이저 를 지정한다.
- 애널라이저 가 등록된 인덱스 에 데이터를 저장하면 텍스트 분석 과정을 거치게 된다.
- 그리고 애널라이저 기반의 생성된
Term
텀 기준으로 데이터 검색이 가능하다.
jumps
또는 jumping
단어 모두 jump
로 텍스트 분석되기 때문에, 데이터 검색 시 jumps
, jumping
, jump
로 요청하여도 동일한 결과를 확인할 수 있다.
인덱스에 애널라이저 등록하는 방법
term
Query
term
Query 질의 방식을 사용하면, match
Query 질의 방식과 다르게 애널라이저 과정이 적용되지 않는다.
- 오로지 저장된
Term
텀 을 기준으로 검색하게 된다.
Custom Analyzer
Index
인덱스 에 Analyzer
애널라이저 를 지정할 때, 토크나이저 와 토큰필터 를 조합하여 등록하는 경우가 많다.
- 애널라이저 만 Custom 하는 것 뿐 아니라, 토큰필터 도 Custom 하게 지정 가능하다.
my_index
인덱스에 my_custom_analyzer
애널라이저 등록
my_custom_analyzer
애널라이저에 my_stop_filter
토큰 필터 적용
Custom 애널라이저를 바로 인덱스에 적용
settings.mappings.message
필드에 지정하여 적용 가능하다.
인덱스 의 설정 정보를 변경하고자 할 때는 삭제 후 다시 생성해야 한다.
_termvectors
API
- 색인된 문서의 역인덱스된 내용을 확인할 때,
_termvectors
API 를 활용하면 된다.
Request
Response
지금까지 Elasticsearch
의 핵심이라 할 수 있는 Analyzer
애널라이저 동작 또는 구성, 설정을 확인하는 방법 등을 살펴보았다.
출처