본문 바로가기
Database

ElasticSearch

by BTC_나르 2023. 7. 21.

베하~! 탑신병자 듀오 팀 나르 입니다!

이번 포스팅에서는 ElasticSearch에 대해서 알아보도록 하겠습니다


ElasticSearch란?

Elasticsearch는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다.

 

Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있습니다.

또한, Elasticsearch는 검색을 위해 단독으로 사용되기도 하며, ELK( Elasticsearch / Logstatsh / Kibana )스택으로 사용되기도 합니다.

ELK 스택이란?

  • 분석 및 저장 기능을 담당하는 ElasticSearch
    • Logstash로부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 있는 정보를 획득
  • 수집 기능을 담당하는 Logstash
    • 다양한 소스( DB, csv파일 등 )의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달
  • 시각화 도구 Kibana
    • Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링

ElasticSearch 주요 개념

클러스터(Cluster)

  • ElasticSearch에서 가장 큰 시스템 단위, 최소 하나 이상의 노드로 이루어진 노드들의 집합
  • 전체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공

노드(Node)

  • ElasticSearch를 구성하는 하나의 단위 프로세스
  • 클러스터에 포함된 단일 서버로서 데이터를 저장하고 클러스트의 색인화 및 검색 기능에 참여

인덱스(Index)

  • RDBMS에서 database와 대응하는 개념
  • 단일 클러스터에서 원하는 개수의 색인을 정의 할 수 있다

샤드(Shard) / 복제(Replica)

  • 샤드(Shard)
    • 데이터를 분산해서 저장하는 방법
    • 인덱스를 여러 Shard로 쪼갠 것
    • 기본적으로 1개가 존재하며, 검색 기능 향상을 위해 클러스터의 Shard 갯수를 조정하는 튜닝을 한다
  • Replica
    • 노드를 손실 되었을 경우 데이터 신뢰성을 위해 Shard를 복제하는 것

ElasticSearch 특징

오픈소스 (open source)

  • Elasticsearch의 핵심 기능들은 Apache 2.0 라이센스로 배포되고 있고 Elastic Stack의 모든 제품들은 깃헙 리파지토리 에서 소스들을 찾을 수 있다

실시간 분석

  • 클러스터가 실행되고 있는 동안에는 계속해서 데이터가 입력 되고, 그와 동시에 실시간에 가까운 속도로 색인된 데이터의 검색, 집계가 가능하다

전문(full text) 검색

  • 색인된 모든 데이터를 역파일 색인 구조로 저장하여 가공된 텍스트를 검색한다.
  • Key-Value 형식이 아닌 문석 기반으로 되어 있어 복합적인 정보를 포함하는 형식의 문서를 있는 그대로 저장히 가능하며, 사용자가 직관적으로 이해하고 사용할 수 있다.

Restful

  • Rest API를 기본으로 지원하며 모든 데이터 조회, 입력, 삭제를 http 프로토콜을 통해 Rest API로 처리

멀티테넌시 (multitenancy)

  • 서로 다른 인덱스들을 별도의 커넥션 없이 하나의 질의로 묶어서 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있다.

ElasticSearch 장점

속도

  • Lucene를 기반을 구축되어 전체 텍스트 검색에 뛰어나다
  • 실시간 검색 플랫폼으로 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 짧다
  • 이런 속도로 인하여 보안 분석, 인프라 모니터링 같은 짧은 검색 시간이 중요할 경우 사용한다

분산적

  • 여러 컨테이너에 걸쳐 여러개의 Shard가 분산되어 있으며, 이 Shard는 복제되어 하드웨어 장애 시에 중복되는 데이터 사본을 제공 받을 수 있다.
  • 수백개의 서버까지 확장하고 페타바이트 데이터를 처리할 수 있도록 해준다.

데이터 수집, 시각화를 간소화

  • Logstash를 통하여 ElasticSearch에서 색이하기 전에 데이터를 훨씬 더 쉽게 처리할 수 있게 된다
  • Kibana는 데이터의 실시간 시각화를 제공하여, UI를 통해 애플리케이션 성능 모니터링(APM), 로그, 인프라 메트릭 데이터에 신속하게 접근할 수 있다.

지금까지 ElasticSearch에 대하여 알아봤습니다

다음 포스팅에는 더욱 흥미로운 주제로 돌아오겠습니다~!

그럼 베빠~!

'Database' 카테고리의 다른 글

[Airflow] Airflow CLI 명령어  (0) 2023.07.24
빅쿼리 INFORMATION_SCHEMA  (0) 2023.07.21
[Airflow] 병렬 처리 Task  (0) 2023.07.17
Class를 활용한 Custom Operator 생성  (0) 2023.07.13
빅쿼리 보안  (0) 2023.07.07

댓글