SlideShare a Scribd company logo
엘라스틱 서치 세미나
엘라스틱 서치란
엘라스틱 서치란
아파치 Lucene를 바탕으로 개발된 분산 검색엔진
RESTful 웹 인터페이스를 가지고 있음
JSON을 통해 데이터를 주고 받음.
엘라스틱 서치
엘라스틱 서치란
클러스트
엘라스틱서치 시스템의 가장 큰 단위
하나의 클러스터는 다수의 노드로 구성
하나의 클러스터를 다수의 서버에 바인딩 할 수 있음.
역으로 하나의 서버에 다수의 클러스터를 운영할 수 있음
엘라스틱 서치란
노드
엘라스틱 서치를 구성하는 하나의 프로세스 단위
다수의 샤드로 구성됨
같은 클러스터 명을 가지면 자동으로 바인딩 됨
노드마다 역할을 나눌 수 있으며, 역할에는 master, data, ingest, tribe가 있다.
마스터 노드에 문제가 생기면 다른 노드가 그 역할을 대신 한다.
엘라스틱 서치란
샤드, 레플리카
샤드는 데이터 검색의 단위 인스턴스이다.
기본적으로 하나의 index는 5개의 샤드를 가진다.
5개의 샤드는 Primary 샤드가 되서 index를 나눠 가진다.
Primary 샤드에 문제가 생기면 레플리카 샤드가 자리를 대신한다.
Primaty 샤드와 레플리카 샤드는 절대 같은 노드에 존재 하지 않는다.
get, search 시 index에 속한 샤드들이 분산 처리 한다.
엘라스틱 서치 특징
엘라스틱 서치 특징
아파치 Lucene(루씬)
자바로 개발된 검색 라이브러리
(최신 엘라스틱 서치에서는 1.8버전을 사용)
엘라스틱 서치, 솔라등에 기반이 됨
엘라스틱 서치 특징
실시간 분석
저장된 데이터는 별도의 재시작이나 상태의 갱신이 필요 없이
색인 작업이 완료되면 바로 검색에 이용된다.
분산 시스템
여러 개의 노드로 구성됨.
시스템의 규모가 커지면 새 노드를 연결해 확장 할 수 있음.
엘라스틱 서치 특징
색인(indexing)
데이터를 검색할 수 있는 구조로 저장하기 위해 행하는 작업.
입력된 텍스트를 토큰으로 변환해 역파일 색인 구조로 저장.
엘라스틱 서치 특징
RESTful API, JSON
모든 데이터 통신은 RESTful API와 JSON으로 이루어짐.
PAINLESS 라는 스크립트를 통해 쿼리에 간단한 제어구조를 만들 수 있음.
엘라스틱 서치 특징
Elastic search VS RDB
Elasticsearch VS RDB
엘라스틱 서치 스택
엘라스틱 서치 스택
ELK
엘라스틱 서치 스택
ELK
엘라스틱 서치 스택
ELK
데이터 수집, 분석, 시각화를 자동화 하는 스택.
로그를 분석하여 보여주는 대시보드용으로 많이 쓰이는 듯함.
엘라스틱 서치 스택
로그스태시(Logstash)
데이터 인풋을 정해진 규칙으로 가공하여 아웃풋을 전달.
다양한 종류의 데이터를 받을 수 있다.
아직 어떻게 쓰는지는 잘 모름…
엘라스틱 서치 불편한 점
엘라스틱 서치 불편한 점
매핑 변경 불가.
한번 정해진 매핑은 추가, 변경, 삭제가 불가 하다.
공식 문서에서도 꼼수를 제공하지만 실제 매핑이 변경되는 것은 아니다.
Mysql에서 컬럼의 자료형을 추가, 삭제 하거나 자료형을 자유자재로
변경 하는 것 처럼 할 수 없다.
엘라스틱 서치 불편한 점
Nested Field에 직접 쿼리 불가
하이라이트 된 부분이 Nested Field.
Comment에 대한 쿼리는 단독으로 수행 할 수 없다.
Comment에 대한 결과도 단독으로 받아 볼 수 없다.
하위 document와 상위 document가 분리 될 필요가
있을 경우에는 Parent, Child를 통해 가능하다.
Parent, Child 관계의 경우에도 1:1 관계만 가능하다.
엘라스틱 서치 활용
엘라스틱 서치 활용
Elastic search + Express + Rxjs
/game?
id=1234
sourgrape/
game/
1234
Promise
result
(async)
subscribe
res.json( result );
끝!

More Related Content

엘라스틱 서치 세미나