엘라스틱서치의 기본개념 및 장점/단점

반응형
728x90
반응형

들어가며

엘라스틱 서치는 검색 엔진이다. 여기서 검색 엔진(search engine)이란, 웹에서 정보를 수집하여 검색 결과를 제공하는 프로그램이다. 우리가 많이 사용하고있는 데이터베이스는 비정형 데이터를 색인하고 검색하는 것이 불가능하다.

 

  • 비정형 데이터 : 정해진 규칙이 없는 데이터; 예) 텍스트, 음성, 영상 등
  • 색인 : 키워드를 찾아보기 쉽도록 정렬한 목록

 

하지만 엘라스틱서치에서는 비정형 데이터를 색인하고 검색하는 것이 가능하다. 또한 엘라스틱서치의 장점 중의 하나인 역색인 구조을 사용함으로써 빠른 검색이 가능하다.

역색인 : 키워드를 통해 문서를 찾는 방식

 

 

관계형 데이터베이스와의 비교

엘라스틱서치 관계형 데이터베이스
인덱스 데이터베이스
샤드 파티션
타입 테이블
문서
필드
매핑 스키마
Query DSL SQL

 

 

엘라스틱서치 특징

엘라스틱서치에서는 하나의 인덱스에 하나의 타입만을 구성할 수 있다. 그리고 기본적으로 HTTP를 통해 JSON 형식의 Restful API를 사용할 수 있다.

엘라스틱서치 기능
GET 데이터 조회
PUT 데이터 생성
POST 인덱스 업데이트, 데이터 조회
DELTE 인덱스 데이터 삭제
HEAD 인덱스의 정보 확인

 

RESTFul API

HTTP 헤더(header)와 URL만 사용하여 다양한 형태의 요청을 할 수 있는 HTTP 프로토콜을 최대한 활용하도록 고안된 아키텍처

 

엘라스틱서치의 API 요청 구조

curl -XGET http://localhost:9090/(인덱스)/(타입)/(문서id) -d '{json 데이터}'

 

 

엘라스틱서치의 장점

  • 1) 오픈소스 검색엔진

엘라스틱서치는 아파치 재단의 루씬(Lucene)을 기반으로 개발된 오픈소스 검색엔진이다.

 

  • 2) 전문 검색

전문 검색이란, 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것이다. 엘라스틱서치는 이러한 전문 검색(Full Text)가 가능하다.

 

  • 3) 통계 분석

비정형 로그 데이터를 수집하고 한곳에 모아 통계 분석을 할 수 있다. ex) Kibana

 

  • 4) 멀티테넌시 (Multi-teneancy)

검색할 필드명으로 여러 개의 인덱스를 한번에 조회할 수 있다.

 

  • 5) 역색인

역색인 구조를 통해서 특정 단어를 찾을때 문서 전체에서 찾는 것이 아닌, 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있다.

 

  • 6) 분산 환경

엘라스틱서치에서는 데이터를 샤드(shard)라는 작은 단위로 나뉘어 제공한다. 데이터를 분산하여 빠르게 처리한다.

 

 

엘라스틱서치의 단점

  • 1) 실시간이 아니다.

엘라스틱서치는 데이터 저장 시점에 해당 데이터를 색인한다. 색인된 데이터는 1초 뒤에나 검색이 가능해져서 실시간으로 검색이 불가능하다. 또한 내부적으로 커밋(commit), 플러쉬(Flush)와 같은 복잡한 과정을 거친다.

 

  • 2) 트랜잭션과 롤백 기능이 없다.

전체적인 클러스터의 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없다.

 

  • 3) 데이터의 업데이트를 제공하지 않는다.

엘라스틱서치는 문서를 수정(update)하지 않는다. 엘라스텍서치에서의 업데이트는 기존 문서를 삭제(delete)하고 다시 삽입(insert)하는 방식이다.

 

 

반응형

Designed by JB FACTORY