Elastic Search란 무엇인가? Lucene 기반 Java 오픈 소스 라이브러리
by 뱁새유니버스
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를 찾아준다.
RDBMS보다 Elastic이 전문(Full Text) 검색 속도가 빠르다고 한다.
RDBMS | 검색엔진 | |
데이터 저장 방식 | 정규화 | 역정규화 |
전문(Full Text) 검색 속도 | 느림 | 빠름 |
의미 검색 | 불가능 | 가능 |
Join | 가능 | 불가능 |
수정 /삭제 | 빠름 | 느림 |
이러한 이유로 검색엔진 시장에서는 Elastic Search 를 많이 사용하는 것 같다.
다음에는 Elastic에서 좀더 심화적으로 다뤄보고자 한다.
요즘 AI가 대세다 보니 Elastic Search도 환각을 줄여주는 수단으로 등장하고 있는 분위기다.
이에 대해서 다음 시간엔 심화를 study해보고자 한다.
'IT' 카테고리의 다른 글
Reddit API 생성하기 유료 무료 레딧 (0) | 2024.08.05 |
---|---|
[알고리즘10] 재귀호출 Branch와 Level을 입력받아 호출횟수 출력하기 (0) | 2023.09.20 |
[알고리즘9] 재귀호출 이해하기 자바 이클립스 디버깅 (0) | 2023.09.20 |
[알고리즘8] 개발 시 시간복잡도 고려하기 (0) | 2023.09.19 |
[알고리즘7] 문자열 입력받고 중복제거 및 오름차순 문자열 출력하기 (0) | 2023.09.19 |
블로그의 정보
가슴이 웅장해지는 모든것
뱁새유니버스