-
Elastic search란?LogSystem 2015. 11. 14. 21:17
1) 소개
Elastic search는 아파치의 Lucene 기반으로 개발한 오픈소스 실시간 분산 검색 엔진(서버)으로 JSON 기반의 비정형 데이터 분산 검색과 분석을 지원합니다. 설치와 서버확장이 매우 편리하다는 장점과 실시간 검색 서비스 지원, 분산 및 병렬 처리 그리고 멀티테넌시 기능을 제공하며, 다양한 기능을 플러그인 형태로 구현하여 적용할 수 있는 것이 큰 특징입니다. 아마존 웹 서비스의 클라우드 서비스와 빅 데이터 처리를 위한 하둡 연동도 지원하고 있습니다. 또한 분산시스템이기 때문에 검색 대상의 용량이 증가했을 때, 대응하기가 수월하다는 장점이 있습니다.
Elastic search는 현재 웹 문서 검색, 소셜 데이터 분석, 쇼핑몰 검색 등 다양한 서비스에서 사용되고 있으며, 앞으로도 중•소규모의 데이터부터 빅 데이터까지 광범위한 검색과 분석 서비스에 활용될 것이라는 전망이 있습니다.
2) 특징
분산과 확장성, 병렬 처리
Elastic search는 보통 3개 이상으로 구성하고 클러스터로 묶어서 처리하기 때문에 하나의 shard가 깨져도 복제되어 있는 다른 곳에 자동적으로 이동해 보여주기 때문에 SPOF(Single Point Of Failure)를 제거합니다. 또한 데이터의 분산과 병렬 처리가 되므로 실시간 검색 및 분석을 할 수 있고,수평적으로 늘어나도록 설계 되어 있기 때문에 더 많은 용량이 필요하면 노드(Elastic search 서버)를 추가하고 클러스터에 추가 후, 추가적인 하드웨어로 이용할 수 있도록 해주면 됩니다. (같은 클러스터 내에서 라면 초기설정 그대로도 노드끼리 연결이 되지만, 다른 클러스터에 있다면 설정 필요)
고가용성
Elasticsearch 는 동작중에 죽은 노드를 감지하고 삭제하며 사용자의 데이터가 안전하고 접근가능하도록 유지하기 때문에, 동작 중에 일부 노드에 문제가 생기더라도 문제없이 서비스를 제공합니다.
멀티 테넌시
클러스터는 여러개의 인덱스들을 저장하고 관리할 수 있으며, 독립된 하나의 쿼리 혹은 그룹 쿼리로 여러 인덱스의 데이터를 검색할 수 있습니다.
전문 검색(Full text search)
Elastic search는 강력한 full text search를 지원합니다.
문서 중심(Document oriented)
복잡한 현실세계의 요소들을 구조화된 JSON 문서 형식으로 저장합니다. 모든 필드는 기본적으로 인덱싱되며, 모든 인덱스들은 단일 쿼리로 빠르게 사용할 수 있습니다.
Schema free
JSON 문서 구조를 통해 데이터를 인덱싱하고 검색가능하게 합니다. (NoSQL과 같은 스키마가 개념이 없음) 그리고 사용자의 데이터가 어떻게 인덱싱 될 것인가에 대한 것은 사용자가 커스터마이징 할 수 있습니다.
플러그인 형태 구현
검색엔진을 직접 수행하지 않고 필요한 기능에 대한 플러그인을 적용하여 기능을 확장할 수 있습니다. 예를 들어 외부에서 제공하는 형태소 분석기나 REST API를 구현하여 적용할 수 있습니다.