Elastic Search

JeeHyeok Lee·2022년 7월 17일
0

Elastic Search란?

  • Apache Lucene(아파치 루씬) 기반의 java 오픈소스 분산 검색 엔진
  • 방대한 양의 데이터를 신속하게 검색, 분석할 수 있다.
  • 검색을 위해 단독으로 사용되기도 하며, ELK(Elasticsearch / logstash / Kibana ) 스택으로 사용되기도 합니다.

Apache Lucene

  • 검색 어플리케이션을 만드는데 사용하는 검색 라이브러리
  • 작은 용량의 라이브러리에 들어있는 적은 클래스들로 검색 어플리케이션을 간단히 구현이 가능하다.

Elastic Search 구조

ELK(Elasticsearch / Logstash / Kibana ) 스택

Logstash - 다양한 소스의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달

Elasticsearch - Logstash로 받은 데이터를 검색 및 집계하여 필요한 정보 획득

Kibana - Elasticsearch의 빠른 검색을 통한 데이터 시각화 및 모니터링

Elastic, 관계형 데이터베이스, REST API

Elasticsearch관계형 데이터베이스REST API
GETSELECTREAD
PUTUPDATEUPDATE
POSTINSERTCREATE
DELETEDELETEDELETE

Elasticsearch의 핵심 개념

클러스터

클러스터는 하나 이상의 노드(서버)가 모인 것으로 전체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공한다. 클러스터는 고유한 이름으로 식별 된다. 기본 이름은 ealsticsearch 이다.

노드

노드는 클러스터에 포함된 단일 서버로서 데이터를 저장하고 클러스터의 색인화 및 검색 기능에 참여한다. 노드는 클러스터처럼 이름으로 식별되는데 기본 이름은 노드에 지정되는 임의 UUID(Universally Unique Identifier)이다. 기본 이름 대신 특정 이름으로 정의하는 것도 가능하다.

노드는 클러스터 이름을 통해 특정 클러스터의 일부분으로 구성될 수 있다. 기본적으로 각 노드는 elasticsearch라는 이름의 클러스터에 포함되도록 설정된다. 네트워크에서 다수의 노드를 시작할 경우 모든 노드가 elasticsearch라는 단일 클러스터를 형성하게 된다.

인덱스

인덱스는 비슷한 특성을 가진 문서의 모음이다. 색인화, 검색, 업데이트, 삭제 작업에 사용된다.

도큐먼트

도큐먼트는 인덱싱 할 수 있는 기본 정보 단위이다. (Entity와 유사) 널리 사용되는 데이터 교환 방식인 JSON형식으로 구성되어 있다.

샤드 & 리플리카

Elasticsearchs에서는 단일 노드의 하드웨어 한도 초과시에 속도가 느려지는 현상을 방지하기 위해 샤드라는 조각으로 분할하는 기능을 제공한다. 샤드는 인덱스를 생성할 때 개수를 지정할 수 있다. 샤드는 그 자체로 온전한 기능을 가진 인덱스의 역할을 하며 어떠한 노드도 호스팅할 수 있다.

샤드에서 오류가 일어날 수 있기 때문에 Elasticsearch에서는 샤드의 복제본인 리플리카 샤드를 만들 수 있도록 기능을 제공한다.

Elasticsearch의 장점

  • Elasticsearch는 Apache Lucene을 기반으로 구축되기 때문에, 전체 텍스트 검색 성능이 뛰어나다.

  • 문서가 인덱싱될 때부터 검색 가능해질 때까지의 대기 시간이 아주 짧다.

  • Elasticsearch에 저장된 문서는 샤드라는 여러 다른 컨테이너에 걸쳐 분산되며, 이 샤드는 복제되어 하드웨어 장애 시에 데이터 사본을 제공합니다. Elasticsearch의 이러한 특징은 수백 개의 서버까지 확장하고 페타바이트의 데이터를 처리할 수 있게 해줍니다.

  • Elasticsearch에는 데이터 롤업, 인덱스 수명 주기 관리 등과 같이 데이터를 훨씬 더 효율적으로 저장하고 검색할 수 있게 해주는 강력한 기본 기능이 다수 탑재되어 있습니다.

  • Elastic Stack은 데이터 수집, 시각화, 보고를 간소화합니다. 

  • Kibana는 Elasticsearch 데이터의 실시간 시각화를 제공하며, UI를 통해 애플리케이션 성능 모니터링(APM), 로그, 인프라 메트릭 데이터에 신속하게 접근할 수 있다.

0개의 댓글