Elasticsearch란?
-
모든 데이터를 색인하여 저장하고 검색, 집계 등을 수행하며 결과를 클라이언트 또는 다른 프로그램으로 전달하여 동작하게 한다.
-
기존의 관계 데이터베이스 시스템에서 다루기 어려운 Full-text Search(전문검색, 역인덱스 방식) 및 점수 기반의 다양한 정확도 알고리즘, 실시간 분석 등의 구현이 가능하다.
-
Elasticsearch는 Logstash라는 이름의 데이터 수집 및 로그 파싱 엔진, 그리고 Kibana라는 분석 및 시각화 플랫폼과 함께 개발되어 있다. 이 3개의 제품들을 일컬어 ELK라고 하며, 연동 솔루션을 사용할 목적으로 설계되어 있다.
💡 역인덱스 방식
: 전체 문장에서 검색한다!! ex)전체 문장에서 '점심'이 들어간 문장 찾기
- 아래 이미지에서 볼 수 있듯이, 생성되는 데이터들은 Logstash를 통해 수집되고 Data를 알맞게 변환하여 ElasticSearch로 제공한다. Elasticsearch는 해당 정보들을 저장해놓고 있다가 검색이 필요할 때 색인을 이용하여 Full-text Search를 수행한다. Kibana는 데이터를 시각화하여 보여준다. 예를 들어 통계데이터를 내어 해당 데이터를 가지고 그림그리기 같은 기능들도 수행이 가능하다. But! 메모리를 많이 잡아먹는다...🥲
(맥북이어도 kibana가 켜지는데 한 세월일 수 있음 주의)
Elasticsearch의 특징
📌 오픈 소스(Open source)
- ELK는 github을 통해 소스코드를 확인할 수 있다. Elasticsearch는 Lucene 기반으로 만들어졌는데, Lucene이 Java기반으로 만들어졌기 때문에 Elasticsearch도 Java로 코딩되어 있다.
📌 실시간 분석(Real-time)
- Elasticsearch 클러스터가 실행되고 있는 동안에 계속해서 색인된 데이터가 입력되고, 그와 동시에 실시간에 가까운 속도로 색인된 데이터의 검색, 집계가 가능하다.
📌 전문 검색 엔진(Full-text Search)
- Lucene은 역파일 색인이라는 구조로 데이터를 저장하는데, Elasicsearch도 마찬가지로 색인된 모든 데이터를 역파일 색인 구조로 저장하여 가공된 텍스트를 검색한다.
- JSON문서 기반으로 내부적으로는 역파일 색인 구조이나 사용자에게는 JSON형식으로 데이터를 전달한다.