본문 바로가기
빅데이터/elasticsearch

[ES] 엘라스틱 서치

by hs_seo 2019. 7. 22.

엘라스틱 서치에 대해서 알아보겠습니다.

엘라스틱서치(Elasticsearch)

  • 2012년 샤이 배논에 의해 개발된 아파치 루씬(Lucene)기반의 분산 검색 엔진
  • 엘라스틱서치는 단독으로 사용되기 보다는 로그스태쉬(Logstash: 로그수집), 키바나(Kibana: 시각화. 모니터링)와 함께 ELK 스택으로 구성 됨
  • 큰 데이터를 실시간으로 분석 가능

특징

  • 스케일 아웃 지원
  • 오류에 대비한 고가용성 구조 지원
    • 샤드, 레플리카를 이용하여 데이터 분산 저장
  • REST API를 지원. JSON 형태의 데이터 지원

주요 용어

일반 용어

RDB와 엘라스틱 서치의 용어는 아래처럼 바꿔서 이해할 수 있습니다.

  • 테이블 = 인덱스
    • 인덱스는 샤드 단위로 파티션
    • 샤드는 복제를 가짐
  • 로우 = 도큐먼트
  • 칼럼 = 필드
  • 스키마 = 매핑

클러스터

  • 여러개의 노드로 구성된 논리적 단위
  • 마스터노드 + 데이터노드로 구성

노드

  • 마스터 노드
    • 클러스터 관리. 각 노드 관리
    • 인덱스와 샤드에 관한 관리
    • 3개의 마스터 노드를 추천. 하나의 노드가 오류일 경우 2대의 노드로 복구
  • 데이터 노드
    • 데이터 보관
    • 입력, 출력, 검색 수행

샤드, 레플리카

  • 샤드(Shard)
    • 데이터 파티셔닝 단위
    • 하나의 인덱스를 샤드의 개수만 큼 나누어서 저장
  • 레플리카(Replica)
    • 샤드의 복제본
  • 샤드, 레플리카의 개수는 인덱스별로 설정
    • 기본값: 사드 5, 레플리카 1
  • 노드별로 샤드가 나누어져 저장
  • 샤드와 레플리카는 다른 노드에 저장되어 장비 오류시 복구에 이용

shard

hits, aggregation

  • REST API를 이용하여 검색한 도큐먼트의 결과는 hits
  • 검색한 결과의 각 필드의 값들을 집계한 결과는 aggregation
  • 검색 결과와 집계 결과를 함께 받을 수 있음

전문 검색(Full Text Search)

  • 일반적인 RDB에서 인덱스는 특정 구간으로 나누어서 처리
    • 일자, 시간, 기간 등
    • B-Tree 인덱스
  • 만약 게시판에서 "동해물과 백두산" 이라고 검색을 하면 데이터베이스의 내용 필드에서 like 검색등으로 찾아야함. 비용이 많이 듬
  • 내용 필드의 문자를 분해하여 단어별로 인덱스를 생성하고, 검색할 때 이 인덱스를 이용하여 조회

역색인(inverted index) 구조

inverted index

REST API 지원

  • GET: Read, Select
  • PUT: Update
  • POST: Create, Insert
  • DELETE: Delete
반응형