상세 컨텐츠

본문 제목

ElasticSearch 입문 - (1)

공부/ElasticSearch

by 아리따운노을 2020. 7. 28. 15:03

본문

인턴을 하는중인데 금요일에 자유 주제로 세미나 발표를 시키셨다.

그래서 금융권에 취직을 생각중인 나에게 도움이 되는 분야가 무엇일까 금융권에서 쓰는 기술에 대해서 조금 찾아봤다.

금융권은 대용량 데이터를 빠르고 안정적으로 처리해야한다. 그래서 어떤 대용량 처리 시스템을 쓸지 찾아봤다.

그 중 ELKR(ElasticSearch Logstash Kibana Redis)에 대해서 발표를 하기로 정했다.


먼저 오늘은 slideshare에 Elastic Search로 가장 Like를 많이 받은 발표 자료를 보고 정리를 하려한다.

출처 : www.slideshare.net/seunghyuneom/elastic-search-52724188


Elastic Search (엘라스틱서치) 입문

Elastic Search (엘라스틱서치) 입문 - 엘라스틱서치, Log Stash, KIBANA

www.slideshare.net


1. 사용사례

a) 위키피디아

- 전문 검색(Full Text Search) 

- 실시간 타이핑 검색

- 추천 검색어 기능

b) 더 가디언(신문사)

- 방문객의 로그 분석

- Social 데이터 생성 및 분석으로 실시간 서비스 제공

- 기사에 대한 반응 분석

c) 스택 오버플로우

- 검색 내용과 결과를 통합해 유사한 질문과 해답을 연결

d) 깃허브

- 소스 코드를 검색하는데 사용

e) 골드만 삭스(Goldman Sachs)

- 주식 시장 분석


2. 특징

a) Lucene으로 개발

- Lucene은 Java로 개발된 정보 검색 라이브러리 오픈 소스

- 사용자 위치 정보 이용 가능, 다국어 검색 지원, 자동 완성 지원, 미리 보기 지원, 철자 수정 기능 지원


b) 분산 시스템

- 여러 개의 노드로 구성되는 분산 시스템

- 노드는 데이터를 색인하고 검색을 수행하는 단위 프로세스

- 기존 노드에 새 노드를 실행하여 연결하는 것만으로 확장 가능

- 데이터는 각 노드에 분산 저장

- 복사본을 유지해 각종 충돌로부터 노드 데이터 보호

- DISCOVERY를 내장해 별도의 분산 시스템 관리자 불필요


c) 높은 가용성 (High Availability)

-  ElasticSearch는 하나 이상의 노드로 구성

- 각 노드는 1개 이상의 데이터 원본과 복사본을 서로 다른 위치에 나누어 저장

- 노드가 종료되거나 실행에 실패할 경우 다른 노드로 데이터 이동

- 항상 일정한 데이터 복사본의 개수를 유지해 높은 가용성과 안정성 보장


d) 멀티 태넌시(Multi Tenancy)

- 데이터는 여러 개의 분리된 인덱스들에 그룹으로 저장(관계형 데이터베이스에 대응)

- 서로 다른 인덱스의 데이터를 하나의 질의로 검색해 하나의 출력으로 도출 가능


e) JSON / RESTful API

- 모든 필드를 색인 후 JSON 구조로 저장

- JSON 구조로 모든 레벨의 필드에 접근이 쉽고 빠른 속도로 검색 가능

- 사전 매핑 없이 JSON 문서 형식으로 데이터를 입력하면 바로 색인 작업 수행

- REST 자원은 색인 된 데이터 및 질의 검색되어 JSON 형식으로 출력된 문서

- JSON 문서를 URI로 병시, 이 문서를 처리하기 위해 HTTP METHOD 이용


f) 실시간 분석

- 저장된 데이터는 검색애 사용되기 위해 별도의 재시작/갱신이 불필요

- 색인 작업이 완료됨과 동시에 바로 검색 가능

- 실시간 분석/검색은 데이터 증가량에 구애받지 않음


3. 다른 시스템과 비교

a) Solr vs ElasticSearch

- Solr도 Lucene 기반

 

Solr 

ElasticSearch 

문서 형식 

XML, CSV, JSON 

JSON 

REST API 

지원 

지원 

라이브러리 

PHP, Ruby, Purl, Scalar, Python, .NET, Javascript 

PHP, Ruby, Purl, Scalar, Python, .NET, Javascript, Erland, Clojure 

데이터 연동 

JDBC, CSV, XML, Tika, URL, Flat File 

ActiveMQ, Amazon SQS, CouchDB, Dropbox, DynamoDB, FileSystem, Git, Github, ... 

다중 스키마 문서 

지원하지   않음

지원 

b) Mongo DB vs ElasticSearch

 

Mongo DB 

ElasticSearch 

구분 

데이터 저장소 

검색 엔진 어플리케이션 

개발언어 

CPP 

JAVA 

운영체제 

Linux, OS X, Solaris, Windows

JVM이 설치된 모든 OS 

접속 방식 

자체 프로토콜 

RESTful/ HTTP API 

문서 구조 

JSON 

JSON 

- 저장이 중요한 시스템은 Mongo DB, 검색이 중요한 시스템은 ElasticSearch 권장

댓글 영역