Skip to content

Elasticsearch #
Find similar titles

Structured data

Category
Big Data

Elasticsearch #

Elasticsearch는 2012년 샤이 베논이 개발한 Apache Lucene 기반의 분산 검색 엔진으로 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈 소스 검색 및 분석 엔진이다. REST API(PUT, GET, POST, DELETE), 분산형 특징, 속도, 확장성이라는 장점을 갖는 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 오픈 소스 도구 모임인 Elastic Stack의 중심 구성 요소이다. Elasticsearch는 단독으로 사용되기 보다는 Logstash, Kibana와 함께 쓰이며, Elasticsearch, Logstash, Kibana를 줄여 ELK Stack이라고 부른다. Elastic Stack에는 데이터를 Elasticsearch로 전송하기 위한 경량의 데이터 수집 에이전트들이 제공되는 컬렉션인 Beats가 포함되어있다. 이를 이용하여 빅데이터를 실시간으로 분석할 수 있다.

사용예시 #

  • 어플리케이션 검색
  • 웹사이트 검색
  • 엔터프라이즈 검색
  • 로깅과 로그 분석
  • 인프라 매트릭과 컨테이너 모니터링
  • 어플리케이션 성능 모니터링
  • 위치 기반 정보 데이터 분석 밎 시각화
  • 보안 분석
  • 비즈니스 분석

작동원리 #

로그, 시스템 매트릭, 웹 어플리케이션 등 다양한 소스로부터 Raw data가 Elasticsearch로 흘러들어 가게 된다. 데이터 수집은 원시 데이터가 Elasticsearch에서 indexing 되기 전에 구문분석, 정규화, 강화되는 프로세스이다. Elasticsearch에서 색인이 진행되면, 사용자는 이 데이터에 대해 쿼리를 실행하고 집계를 사용해 데이터의 복잡한 요약을 검색할 수 있다. 또한, Kibana에서 사용자는 데이터를 시각화하고, 대시보드를 공유하며, Elastic Stack을 관리할 수 있다.

Indexing #

Elasticsearch Index는 서로 관련된 문서들의 모음이며, 각 문서는 일련의 key와 value를 서로 연결한다. Elasticsearch는 JSON형식으로 데이터를 저장한다. Elasticsearch는 반전된 인덱스라고 하는 데이터 구조를 사용하는데, 이로 인해 텍스트 검색시간이 상당히 단축된다. 여기서 반전된 인덱스는 문서에 나타나는 모든 고유한 단어의 목록을 만들고, 각 단어가 발생하는 모든 문서를 식별하는데, 색인 프로세스 중에 Elasticsearch는 문서를 저장하고 반전된 인덱스를 구축하여 거의 실시간으로 문서를 검색 가능한 데이터로 변환한다. 인덱스 API를 사용해 색인이 진행되며, 이를 통해 사용자는 특정한 인덱스에서 JSON 문서를 추가하거나 업데이트할 수 있다.

Logstash #

Logstash는 데이터를 집계하고 처리하여 Elasticsearch로 전송하는 데 사용된다. Logstash는 서버 사이드 오픈 소스 데이터 처리 파이프라인으로, 사용자는 이를 이용해 다양한 소스에서 동시에 데이터를 수집하고, 이를 강화하고 변환한 다음, Elasticsearch에서 색인 되도록 할 수 있다.

Kibana #

Kibana는 Elasticsearch를 위한 시각화 및 관리 도구로서, 실시간 히스토그램, 선 그래프, 파이프 차트, 지도 등을 제공한다. Kibana에는 사용자가 자신의 데이터를 기반으로 사용자 정의한 동적 인포그래픽을 만들 수 있는 Canvas, 위치 기반 정보 데이터를 시각화하기 위한 Elastic Maps 같은 고급 어플리케이션도 포함된다.

장점 #

  1. 속도
    Elasticsearch는 Lucene을 기반으로 구축되기 때문에, 전체 텍스트 검색에 뛰어나다. Elasticsearch는 실시간 검색 플랫폼과 거의 유사한데, 이는 문서가 색인 될 때부터 검색이 가능해질 때까지의 대기 시간이 매우 짧다는 것을 의미한다.

  2. 분산성
    Elasticsearch에 저장된 문서는 ‘shard(샤드)’라는 다른 컨테이너에 분산되고, 이 샤드는 복제되어 하드웨어 장애 시에 중복되는 데이터 사본을 제공한다. Elasticsearch의 분산적인 특징은 다수의 서버까지 확장하고 petabyte의 데이터를 처리할 수 있도록 도와준다.

  3. 넓은 범위의 기능 세트 제공
    Elasticsearch는 데이터의 roll-up, 인덱스 수명 주기 관리 등과 같이 데이터를 훨씬 효율적으로 저장하고 검색할 수 있게 해주는 강력한 기본 기능이 다수 탑재되어 있다.

  4. 데이터 수집, 시각화, 보고의 간소화
    Beats, Logstash의 통합을 통해 Elasticsearch로 색인하기 전에 데이터를 훨씬 더 쉽게 처리할 수 있게 되었다. Kibana를 통하여 데이터의 실시간 시각화 작업을 진행할 수 있으며, UI를 통해 어플리케이션 성능 모니터링, 로그, 인프라 매트릭 데이터에 신속하게 접근할 수 있다.

지원하는 프로그래밍 언어 #

  • 자바(JAVA)
  • 자바스크립트(Node.js)
  • Go
  • .NET(C#)
  • PHP
  • Perl
  • Python
  • Ruby

AWS Elasticsearch Service #

Amazon Elasticsearch Service(Amazon ES)는 AWS 클라우드에서 Elasticsearch 클러스터를 쉽게 배포, 운영 및 조정할 수 있는 관리형 서비스이다. Amazon ES 사용을 통해 Elasticsearch API에 바로 접근하여 기존 코드 및 애플리케이션을 서비스를 통해 원활하게 사용할 수 있다.

참고 #

0.0.1_20140628_0