[ElasticSearch] 분석(Analysis)

참고한 링크 및 문헌

참고한 도서📚 시작하세요! 엘라스틱서치

엘라스틱서치에서 색인을 할 때 입력된 데이터는 검색어를 추출하기 위한 프로세스를 거치는데 이 과정을 분석(Analysis)라고 한다.
이 때 분석 과정에서 사용하는 프로그램을 분석기-애널라이저(Analyzer)라고 하며 분석기는 하나의 토크나이저(Tokenizer)와 0 또는 1개 이상의 토큰필터(Token Filter)로 구성돼 있다.
토크나이저는 입력 데이터를 토크나이저에 설정된 기준에 따라 검색어 토큰으로 분리하는 작업을 한다.
토큰필터는 토크나이저로 분리된 토큰들에 다시 필터를 적용해서 실제로 검색에 쓰이는 검색어들로 최종 변환하는 작업을 한다.

분석

분석 과정

엘라스틱서치에서 데이터를 색인할 때 문서가 분석되는 과정은 다음과 같다.
데이터는 색인될 때 인덱스에 설정된 분석기의 종류에 따라 토크나이저 -> 토큰필터 순으로 분석과정을 거친다.

_analyze API

_analyze를 사용하면 입력한 데이터를 분석한 결과를 화면으로 출력할 수 있다.
토크나이저는 tokenizer, 토큰필터는 filters 파라미터(매개변수)로 지정한다.
토큰필터를 여러개 설정할 때는 단순히 ,로 나열 가능하다
아래 예시는 whitespace 토크나이저와 lowercase, stop 토큰필터를 사용한 분석 결과를 요청하는 명령이다

-XPOST http://localhost:9200/_analyze?tokenizer=whitespace&filters=lowercase,stop@pretty ..

사용자 정의 분석기

사용자가 임의의 토크나이저와 토큰필터를 선택해서 사용자 정의 분석기를 생성할 수 있다.
사용자 정의 분석기는 인덱스단위로 저장되며 해당 인덱스에 데이터를 색인할 때 분석기를 명시해서 사용할 수 있다.
분석기는 인덱스의 settings 옵션을 사용해서 생성하며 생성하는 명령은 다음과 같다.

  • 위의 예시에서의 토크나이저와 토큰필터 조합을 하나의 분석기로 customize 해보자!
"settings" {
	"analysis" : {
    	"analyzer" : {
        	"my_analyzer(사용자 정의 분석기 이름)" : {
            	"tokenizer" : "whitespace",
                "filter" : ["lowercase","stop"]
                ...

이제 생성된 my_analyzer 분석기를 이용해서 데이터를 분석하는 방법은 _analyze API의 analyzer 매개변수를 이용하면 된다.

-XPOST http://localhost:9200/books/_analyze

좋은 웹페이지 즐겨찾기