뱁새유니버스

Elastic Search란 무엇인가? Lucene 기반 Java 오픈 소스 라이브러리

by 뱁새유니버스

IT

Elastic Search는 Lucene 기반의 Java 오픈소스 검색 라이브러리다. 

굉장히 잘만들어진 검색엔진으로 2010년대 즈음부터 전세계에서 많이 사용하고 있다. 

Elastic Search의 핵심은 역색인 구조다. 

기존 관계형 데이터베이스와 다르다. 

Elastic Search는 책의 맨 뒤에 있는 ㄱ~ㅎ까지의 색인들과 같다.

RDBMS(관계형데이터베이스)는 책의 첫페이지 같다. 

검색엔진에서의 역색인(Inverted Index) 방식은 Elastic 회사에서 소개한 대표적인 예제가 있다. 

예제는 아래와 같다.

RDBMS는 아래 표와 같이 테이블 형태로 저장한다.

Doc Text
1 The quick brown fox jumps over the lazy dog
2 Fast jumping rabbits

출처. : Elastic , https://www.slideshare.net/kjmorc/ss-80803233

Inverted Index는 아래 표와 같이 저장한다. 

TOKEN(TERM) DOC TOKEN(TERM) DOC
Fast 2 jumps 1
The 1 lazy 1
brown 1 over 1
dog 1 quick 1
fox 1 rabbits 2
jumping 2 the 1

그리고 아래 표와 같이 여러 전처리를 거친다. 

TOKEN(TERM) DOC TOKEN(TERM) DOC
brown 2 lazi 1
dog 1 over 1
fast 1 , 2 quick 1 , 2
fox 1 rabbit 2
jump 1 , 2    

차이점이 보이는가? 모든 대문자들을 소문자화 하고, 동일어 처리를 하고(fast와, quick둘다 동의어이기에 Doc을 1,2모두로 설정했다.) 복수를 단수로 바꿨다.

이게 바로 역색인 방식이다. 

그래서 The lazy spiders를 검색하면 lazi와 rabbit을 찾아 doc 1,2를 찾아준다. 

출처 : https://www.slideshare.net/kjmorc/ss-80803233

RDBMS보다 Elastic이 전문(Full Text) 검색 속도가 빠르다고 한다. 

  RDBMS 검색엔진
데이터 저장 방식 정규화 역정규화
전문(Full Text) 검색 속도 느림 빠름
의미 검색 불가능 가능
Join 가능 불가능
수정 /삭제 빠름 느림

이러한 이유로 검색엔진 시장에서는 Elastic Search 를 많이 사용하는 것 같다. 

다음에는 Elastic에서 좀더 심화적으로 다뤄보고자 한다.

요즘 AI가 대세다 보니 Elastic Search도 환각을 줄여주는 수단으로 등장하고 있는 분위기다.

이에 대해서 다음 시간엔 심화를 study해보고자 한다. 

반응형

블로그의 정보

가슴이 웅장해지는 모든것

뱁새유니버스

활동하기