두서없는 공부 노트/ElasticSearch

ElasticSearch - 역 인덱스 ( Inverted Index)란 [ 설명 ]

kkm8257 2021. 12. 14. 10:22
반응형
-- 일반적으로 오라클이나 MySql 같은 관계형 DB에서는 내용을 테이블 구조로 저장을 한다. 2차원 구조
-- 만약에 테이블에서 Text에 'fox'가 포함된 행들을 가져온다고하면 Text열을 한 줄씩 찾아 내려가면서 'fox' 가 있으면 가져오고
-- 없으면 넘어가는 식으로 데이터를 가져옴
-- 전통적인 RDBMS에서는 위와 같이 [ like ] 검색을 사용하므로 데이터가 늘어날수록 검색해야 할 대상이 늘어나 시간도 오래걸리고
-- row 안의 내용을 모두 읽어야 하기 때문에 기본적으로 속도가 느리다.

--  ES는 데이터를 저장할 때 다음과 같이 역 인덱스(Inverted Index)라는 구조를 만들어 저장합니다.
-- 역 인덱스란, 책의 맨 뒤에 있는 주요 [ 키워드 ]에 대한 내용이 몇 페이지에 있는지 알려주는 [ 찾아보기 페이지 ]에 비유 할 수 있다.
-- ES에서는 추출된 각 키워드를 [ 텀(Term) ] 이라고 부른다. 이렇게 역 인덱스가 있으면 fox를 포함하고 있는 도큐먼트들의 id를 바로 얻어 올 수 있다.
-- 그러므로 데이터가 늘어나도 찾아가야 할 행들이 늘어나는 것이 아니라, 역 인덱스가 가리키는 id의 배열값이 추가되는 것이기 때문에
-- 큰 속도 저하없이 빠른 속도로 검색이 가능하다.
-- 이러한 역 인덱스를 , 데이터가 저장되는 과정에서 만들기 때문에 ES는 데이터를 입력할 때 저장이 아닌 [ 색인한다 ]고 표현한다.




반응형