Elasticsearch-01 : 엘라스틱서치 개요 및 특징
1. 엘라스틱서치(Elasticsearch)란?
엘라스틱서치(Elasticsearch)는 루씬(Lucene) 기반의 검색 엔진입니다. 여기서 루씬(Lucene)은 자바로 개발된 오픈소스 정보검색 라이브러리입니다. 따라서 엘라스틱서치(Elasticsearch) 자바로 개발되었으며 오픈 소스로 출시되었습니다. 게다가 다양한 언어(자바, 닷넷(C#), PHP, 파이썬, 그루비 등) 클라이언트를 지원합니다. 엘라스틱서치(Elasticsearch)는 로그스태시(Logstash)라는 이름의 데이터 수집 및 로그 파싱 엔진, 그리고 키바나(Kibana)라는 이름의 분석 및 시각화 플랫폼과 함께 개발되었습니다. 이를 엘라스틱서치(Elasticsearch) + 로그스태시(Logstash) + 키바나(Kibana)를 같이 연동하여 사용한다는 의미로 ELK 혹은 ELK 스택(ELK Stack)라고 합니다.
2. 일래스틱서치(Elasticsearch)의 특징
엘라스틱서치(Elasticsearch)의 특징은 아래와 같습니다.
- 설치 과정이 간단한 편, 우분투같은 데비안 기반 운영체제면 apt-get으로도 쉽게 설치 가능
- 노드라고 불리는 프로세스 단위로 구성되어 있는데, 확장이 필요하다면 그저 새 노드를 실행하고 기존의 노드와 연결하여 scale-out이 매우 간단함
- 데이터를 저장한 뒤 검색하기 위해 재실행과 같은 과정이 필요없음, 인덱싱만 끝나면 검색이 가능
- 하나의 인덱스에 하나의 타입만을 구성할 수 있음
- HTTP를 통해 JSON 형식의 Restful API를 사용할 수 있음
- 오픈소스이므로, 다양한 기능의 플러그인이 존재
- 하나 이상의 노드가 실행되면서, 죽은 노드가 있을 경우 자동으로 감지 후 다른 노드에게 맡기며 매우 안정적인 서비스를 보장
- 비정형 로그 데이터를 수집하고 한곳에 모아 통계 분석을 할 수 있음
- 전체적인 클러스터의 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없음
- 데이터 저장 시점에 해당 데이터를 색인한
- 색인된 데이터는 1초 뒤에나 검색이 가능해져서 실시간으로 검색이 불가능. 또한 내부적으로 커밋(commit), 플러쉬(Flush)와 같은 복잡한 과정
- 업데이트는 기존 문서를 삭제(delete)하고 다시 삽입(insert)하는 방식
- ELK 스택을 구성하여 활용할 수 있음


