ES의 검색과정에서 가장 중요하게 알고 있어야할 개념은 바로 'Inverted Index'이다.
ES에서의 검색과정은 위와 같이 어떤 검색어가 들어오면 해당 검색어를 분석하고
그 검색어를 inverted Index 내에서 검색하여 그 결과를 표시해준다.
그럼 이 Inverted Index란 무엇일까?
Inverted Index
ES에서 Inverted Index란 문자열을 분석하고 난뒤 그 결과를 저장하고 있는 구조체를 말한다.
위 그림을 보면 현재 document 2개가 저장되어있는데
book이라는 문자열은 document 두개 모두 가지고 있기에 오른쪽 표와 같이 book 토근에 1,2 이렇게 구조화하여 저장할 수 있다. 또 kernel 이라는 문자열은 첫번재 document만 가지고 있기에 kernel : 1 이렇게 구조화하여 저장하고 있다.
이렇듯 Inverted Index란 ES에서 저장하고 있는 document들의 문자열을 분석하고 그 결과를 저장하고 있는 구조체를 말하며 위의 예시는 이해를 위한 예시이지 실제로는 더욱 복잡한 과정으로 생성되어 저장되어진다.
애널라이저(Analyzer)
Inverted Index를 만들어내기 위해서 필요한 토큰(token)을 생성하는 과정에서 애널라이저가 동작하게 된다.
이러한 애널라이저는 대표적으로 character filter, tokenzier, token filter 3개가 있을 수 있다.
예를 들어 character filter 에서는 특수문자를 제거하고
tokenzier에서는 공백을 기준으로 나누고
token filter에서는 모든 문자를 소문자로 치환하는 등의 일련의 과정들을 수행하게 된다.
이러한 애널라이저는 다양한 종류가 존재하며 애널라이즈를 커스터마이징해서 자신이 원하는대로 사용할 수 도있다.
애널라이저 Test 해보기
GET /_analyze 요청을 통해서 애널라이저가 어떻게 동작하는지 테스트해볼 수 있다.
어떠한 애널라이저를 사용할 것인지를 정해주고 어떤 문장을 분석을 할지 text를 정해주면
아래와 같이 어떠한 토큰이 만들어지는지 response를 보내준다.
정리해보면
검색어 분석과정에는 analyzer가 동작하고 analyzer에 의해서 생성된 토큰을 inverted index에서 검색한다.
이러한 검색과정은 Indexing 과정과는 다르게 프라이머리 샤드와 레플리카 샤드 모두가 처리할 수 있다.
'ElasticSearch' 카테고리의 다른 글
Elasticsearch 기본개념 정리 (7) : text와 keyword Type (0) | 2023.02.12 |
---|---|
Elasticsearch 기본개념 정리 (6) : 적절한 샤드의 수를 설정하는 방법에 대해서 (0) | 2023.02.12 |
Elasticsearch 기본개념 정리 (4) : Elsaticsearch 색인(Indexing) 이란? (0) | 2023.02.12 |
Elasticsearch 기본개념 정리 (2) : 인덱스와 샤드 (0) | 2023.02.12 |
Elasticsearch 기본개념 정리 (3) : 매핑(Mapping)이란? (0) | 2023.02.11 |