엘라스틱 서치 (Elastic search) 는 엘라스틱 스택 (Elastic Stack) 의 심장이라고 불릴 만큼, 전반적인 스택의 중심에 위치하고 있으며 가장 중요한 역할을 하게 됩니다. 기본적으로 모든 데이터를 색인하여 저장하고 검색하여, 그 결과를 클라이언트 또는 다른 프로그램으로 전달하여 동작시킵니다.
Elastic search 는 검색 능력이 뛰어나고 대규모 분산 시스템을 구축하는 등 다양한 기능들을 제공할 수 있지만, 설치 과정과 사용방법은 의외로 쉽고 간편합니다. 또한 RDBMS 에서는 다루기 어려운 전문검색 기능과 다양하고 정확한 알고리즘, 실시간 분석 등의 구현이 가능합니다.
실제로 기업에서는 엘라스틱 서치를 활용하여 마케팅 분석, 비즈니스 서비스, 인프라 모니터링, 실시간 탐지 등이 대표적으로 활용되고 있습니다.
장점
1) 전문 검색 (Full Text)
전문 검색이란, 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것을 말합니다. 엘라스틱 서치에서는 이러한 전문 검색이 가능하게 합니다.
2) 역색인
가장 큰 장점이라고 할 수 있는 역색인 구조를 사용함으로써 빠른 검색이 가능합니다. 역색인 구조를 통해서 특정된 단어를 찾을 때 문서 전체를 찾는 것이 아닌, 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있습니다.
3) 분산 환경
엘라스틱 서치에서는 데이터를 샤드 (Shard)라는 작고 미세한 단위로 나누어 제공합니다. 이 데이터를 분산하여 빠르게 처리한다는 장점이 있습니다.
단점
1) 실시간 X
엘라스틱 서치는 앞서 설명드린 것처럼, 데이터 저장 시점에서 해당 데이터를 색인합니다. 색인된 데이터는 즉각이 아닌 몇초 후에나 검색이 가능해져서 실시간으로 검색이 불가능합니다. 또한 내부적으로 커밋 (Commit), 플러쉬 (Flush) 와 같은 복잡하고 난해한 과정을 거치게 됩니다.
2) 트랜잭션 기능 X
전체적인 클러스터의 성능 향상을 위한 트랜잭션의 기능이 없습니다. 이는 분산 시스템의 구성 특징 때문에 시스템적으로 비용 소모가 큰 트랜잭션을 지원하지 않습니다.
3) 업데이트 X
엘라스틱 서치는 별도로 문서를 수정하지 않습니다. 따라서 업데이트 또한 제공하지 않으며, 엘라스틱 서치에서의 업데이트라 함은 기존에 있던 문서를 아예 삭제하고 다시 삽입하는 방식입니다. 업데이트의 경우 정확하게 이해 하지 못해 검색을 여러 곳에서 해보았지만 이정도가 내가 이해 한 부분이라 더많은 내용이 있지만 추가 하지 않았습니다.