엘라스틱 서치는 Apache Lucene에 구축되어 배포된 검색 및 분석 엔진이다.
위 글로 알수있는정보는 엘라스틱 서치는 검색하고 분석하는 엔진이라는 점 입니다. 라는 것이다.
그래서 그런지 요즘 기업 채용공고를 보면 뭔가를 검색하는 부분이 있으면 엘라스틱 서치를 알고있는지를 많이 보는것 같아요!
좀 더 잘라서 알아봅시다!
검색이란 사용자가 원하는 결과를 재공해주는 것입니다. 에서 끝나면 검색 엔진을 말하는것이며 검색 엔진을 기반으로 색인하여 결과를 UI로 제공한다면 검색 시스템, 검색 엔진을 기반해 구축한 시스템을 활용해 결과를 제공해주는 서비스를 검색 서비스! 라고 합니다.
그러면 이런 관계가 되겠죠?
검색 서비스 > 검색 시스템 > 검색 엔진
우리는 검색 서비스를 이용해 시스템을 구축하는데 이때 사용되는 엔진으로 엘라스틱 서치를 선택할수 있다는 거겠죠? (외에도 솔라,알골리아 등이 있으나 주로 엘라스틱 서치를 이용한다고 합니다.)
그러면 우리가 구축하는 검색 시스템이라는 것의 구성으로는 뭐가 있을까요?
일단 정보를 수집해야하는 수집기, 수집한 정보를 검색 가능한 구조로 가공하고 저장해주는 색인기(저는 여과기 또는 필터라고 이해했습니다.), 데이터를 저장해주는 물리 저장소인 스토리지, 사용자에게서 질의를 받아 결과를 찾아주는 검색기로 구성되어 있습니다.
생각보다 그렇게 많지는 않은거같아요.
관계형 데이터 베이스(RDB)와 엘라스틱 서치(ES)는 아래 그림과 같은 차이를 가지고 있습니다.(참고로 ES는 NoSQL의 일종이라고 합니다.)
또한 RDB의 경우 하나의 데이터를 찾는 질의어를 실행했을시 하나의 행이 출력이 되지만 ES의 경우 JSON 형태의 문서가 출력된답니다.
장점
단점
위 글들을 정리하면
엘라스틱 서치는 검색 시스템을 구축시 사용하는 검색 엔진으로 NoSQL일종입니다.
기존의 관계형 데이터 베이스와는 차이점이 존재하며 질의문의 응답값으로 JSON 형태의 문서가 출력됩니다.
장점으로는 다른 NoSQL인 MongoDB처럼 대용량 저장소로 사용가능하며,
실시간에 준하는 검색, 대량의 비정형 데이터를 검색, 유연한 질의문 사용이 있으며
단점으로는 빠르긴 하지만 실시간이 아닌 점, 트랜잭션과 롤백이 제공되지 않는 점,
데이터 업데이트가 안되기에 데이터를 삭제후 다시 변경된 데이터로 재생성 해야 하는 부분에서 상대적으로
많은 비용이 발생한다는 점이 있습니다.