////
Search
Duplicate
1️⃣

1장. ElasticSearch 훑어보기

: ElasticSearch가 무엇인지 알아보고, 설치하는 방법
: 리눅스 배포판 별로 RPM, DEB로 설치하는 방법과 tar 파일을 통해 설치하는 방법을 설명

1. ElasticSearch란?

: ElasticSearch는 루씬 기반의 오픈 소스 검색 엔진, JSON 기반의 문서를 저장하고 검색할 수 있으며 문서의 데이터를 기반으로 분석 작업도 할 수 있다.
항목
특징
준실시간 검색 엔진
실시간이라고 생각할 만큼 색인된 데이터가 매우 빠르게 검색됨
클러스터 구성
한 대 이상의 노드를 클러스터로 구성하여 높은 수준의 안정성을 이루고 부하를 분산할 수 있음
스키마리스
입력될 데이터에 대해 미리 정의하지 않아도 동적으로 스키마를 생성할 수 있음
Rest API
Rest API 기반의 쉬운 인터페이스를 제공하여 비교적 진입 장벽이 낮음

준실시간 검색 엔진

: ElasticSearch는 준실시간성 검색 엔진이라할 수 있는데, 실시간에 준하는 수준의 검색 성능을 제공한다는 뜻이다.
: 문서를 입력하자마자 검색하는 것이 불가능하다 하더라도 색인 간격을 1초로 하면 1초 후에는 검색이 가능해지기 때문이다.
⇒ 준실시간성은 refresh_interval이라는 파라미터의 영향을 받는다. 해당 파라미터를 조절하면 특정 시간 이후에 검색할 수 있게 변경할 수 있다.
: { “title”: “test” }라는 JSON 문서를 입력하면 해당 문서는 우선 메모리에 저장된다.
: 그리고 1초 후에 샤드라는 ElasticSearch 데이터 저장 공간에 저장되고 이 이후에는 쿼리를 통해서 해당 문서를 검색할 수 있게 된다.

클러스터 구성

: 클러스터란 여러 대의 컴퓨터 혹은 구성요소들을 논리적으로 결합하여 전체를 하나의 컴퓨터 혹은 하나의 구성요소처럼 사용할 수 있게 해주는 기술이다.
: 클러스터로 구성하면 높은 수준의 안정성을 얻을 수 있고 부하를 분산시킬 수 있다.
: 클러스터를 구성하고 있는 모든 노드는 메시 형태로 요청을 주고 받기 때문에 어떤 노드에서도 색인/검색 작업을 처리할 수 있다.
: RDBMS처럼 Master Datbase만 요청을 처리할 수 있는 형태가 아니기 때문에 클러스터 내의 노드가 많아질수록 부하를 분산시킬 수 있다.

스키마리스

: 샤드에 데이터를 저장하기 위해서 어떤 항목을 저장할 것인지 사전에 정의하지 않아도 된다는 의미로 MySQL과 같은 RDBMS는 테이블을 만들고 테이블에 입력할 데이터의 각각의 필드를 미리 정의해두어야 한다.
: 초반에 입력하던 정보와 최근에 입력한 정보 사이에 새로운 필드가 추가될 경우에도 이를 미리 정의할 필요가 없다. ElasticSearch가 새로운 필드에 대한 스키마를 자동으로 만든다.

Rest API

: ElasticSearch는 Rest API 기반의 인터페이스를 지원하기 때문에 어떤 언어로도 클라이언트를 만들 수 있다.
: ElasticStack이라는 로그 수집/분석 시스템이 전세계적으로 활발하게 사용되고 있다.

2, 3, 4. ElasticSearch 설치하기

실습을 진행하는 단원으로 생략
본인은 tar 파일로 설치하였음

5. 마치며

정리
: ElasticSearch는 준실시간성을 가지고 있으며 클러스터로 구성하여 안정적으로 운영할 수 있고 스키마를 미리 정의할 필요가 없으며 Rest API 기반의 간편한 인터페이스를 제공해주는 검색 엔진이다.
: RPM, DEB, tar로 설치를 진행하려면 각 배포판에 맞는 자바를 설치해야 한다.
: tar를 통한 설치는 RPM, DEB에 비해 복잡하지만 다수의 ElasticSearch를 노드를 실행시킬 수 있다는 장점이 있다.