엘라스틱서치의 기본개념 및 장점/단점
- Coding/Elasticsearch
- 2020. 12. 20.
들어가며
엘라스틱 서치는 검색 엔진이다. 여기서 검색 엔진(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)하는 방식이다.
'Coding > Elasticsearch' 카테고리의 다른 글
엘라스틱서치 검색 방법 (URI, Request Body) (1) | 2021.01.20 |
---|---|
엘라스틱서치의 매핑 (0) | 2020.12.20 |
엘라스틱서치의 용어 및 클러스터/노드 관계 (0) | 2020.12.20 |