Elasticsearch는 어떻게 빠르게 검색할 수 있을까?
Elasticsearch는 데이터를 저장할 때 색인한다고 표현한다. 이 때 역색인(inverted index) 구조에 저장한다. 역색인에 대해 알아보자.
단어 기준으로 문서를 찾기 쉽게 미리 색인을 만들어 놓은 구조이다. '어떤 단어가 어떤 문서에 등장하는가'를 빠르게 찾기 위해 만들어졌다. 예를 들어, 단어 -> 문서 ID 목록 이런 식으로 미리 색인을 만들어둬서 특정 단어가 포함된 문서를 빠르게 찾을 수 있다.
Elasticsearch는 역색인 구조로 저장하는 과정을 통해 빠르게 검색할 수 있다. 이때 내부적으로 텍스트 분석 과정을 거쳐 저장한다.
Elasticsearch에서 텍스트가 저장될 때 다음과 같은 과정을 거친다.
Tokenizer: 토큰화
Normalization
소문자 변환 (Quick -> quick)
어근 추출 (foxes -> fox)
동의어 처리 (jump, leap -> jump)
역색인 구조로 저장
이처럼 Elasticsearch는 문장을 토큰화하고 불필요한 정보를 정제한 뒤, 역색인 구조로 저장함으로써 방대한 데이터 속에서도 원하는 정보를 빠르게 찾아낼 수 있다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-overview.htmlarrow-up-right
https://velog.io/@yeonns/how-full-text-search-worksarrow-up-right
https://develop-tracking.tistory.com/187arrow-up-right
Last updated 10 months ago