색인과 검색 원리
Elasticsearch는 어떻게 빠르게 검색할 수 있을까?
Last updated
Elasticsearch는 어떻게 빠르게 검색할 수 있을까?
Last updated
Elasticsearch는 데이터를 저장할 때 색인한다고 표현한다. 이 때 역색인(inverted index) 구조에 저장한다. 역색인에 대해 알아보자.
단어 기준으로 문서를 찾기 쉽게 미리 색인을 만들어 놓은 구조이다. '어떤 단어가 어떤 문서에 등장하는가'를 빠르게 찾기 위해 만들어졌다. 예를 들어, 단어 -> 문서 ID 목록 이런 식으로 미리 색인을 만들어둬서 특정 단어가 포함된 문서를 빠르게 찾을 수 있다.
Elasticsearch는 역색인 구조로 저장하는 과정을 통해 빠르게 검색할 수 있다. 이때 내부적으로 텍스트 분석 과정을 거쳐 저장한다.
Elasticsearch에서 텍스트가 저장될 때 다음과 같은 과정을 거친다.
Tokenizer: 토큰화
Normalization
소문자 변환 (Quick -> quick)
어근 추출 (foxes -> fox)
동의어 처리 (jump, leap -> jump)
역색인 구조로 저장
이처럼 Elasticsearch는 문장을 토큰화하고 불필요한 정보를 정제한 뒤, 역색인 구조로 저장함으로써 방대한 데이터 속에서도 원하는 정보를 빠르게 찾아낼 수 있다.