Elasticsearch 란?
정형 및 비정형 데이터를 위한 오픈소스 검색엔진
특징
- 오픈소스 검색엔진
- 아파치 재단의 루씬(Lucene)을 기반으로 개발된 오프소스 검색 엔진.
- 오픈소스의 장점인,
- 셀수없는 수많은 사용자가 있고, 또한 버그가 발생하면, 대부분 빠르게 해결됨.
- 전문검색(Full Text) 지원
- 대부분의 데이터베이스는 기본 쿼리 및 색인 구조의 한계로 인해 기본적인 텍스트 검색 기능만 제공함.
- but 엘라스틱서치는 고차원적인 전문 검색(Full Text)이 가능함.
- 전문 검색이란?
- 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것을 말함.
- 즉, 전문검색은, 관계형 데이터 베이스에는 적합하지 못함.
- but, 엘라스틱서치는 다양한 기능별, 언어별 플로그린을 조합해 빠르게 검색가능함.
- 통계분석
- 비정형 로그 데이터를 수집 후,
- 엘리스틱 서치 와 키바나(Kibana)의 조합으로 실시간으로 쌓이는 로그를 시각화하고 분석 가능함.
- 스키마 리스(Schema-less)
- 데이터베이스는 스키마라는 구조에 따라 데이터를 적합한 형태로 변경 후 저장하고 관리함.
- but, 엘라스틱 서치는 정형화 되지 않은 다양한 형태의 문서도 자동으로 색인 및 검색 가능함.
- RESTful API 지원
- HTTP 기반 의 RESTful API를 지원하고, 요청/응답에도 JSON 형식을 사용함.
- 멀티-테넌시(Multi-Tenancy) 기능 제공
- 서로 상이한 인덱스일지라도 검색할 필드명만 같으면, 여러개의 인덱스를 한번에 조회 가능함.
- 도규먼트 오리엔티드(Document-Oriented)
- 여러 계층의 데이터를 JSON 형식의 구조화된 문서로 인덱스에 저장가능함.
- 역색인(Inverted Index)
- 루씬기반의 검색 엔진으로써, 역색인(Inverted Index)을 지원 가능함.
- but, 요즘 많이 사용하는 MongoDB, Cassandra 같은 일반적인 NoSQL은 역색인을 지원하지 않음.
- 즉, 다른 NoSQL 과 차별화되는 큰 장점을 보유했다고 말할 수 있음.
- 확장성과 가용성지원
- 엘라스틱 서치를 분산 구성해서 확장하면, 대량의 문서를 좀 더 효율적으로 처리할 수 있음.
- 분산 환경에서 데이터는 보통 샤드(Shard) 라는 작은 단위로 나뉘어 제공됨.
- 그리고, 엘라스틱 서치는, 인덱스를 만들 때마다 해당 샤드의 수를 조절할 수 있음.
- 즉,이를 통해서 데이터의 종류와 성격에 따라 데이터를 분산해서 빠르게 처리하는것이 가능함.
단점
조인불가
- 트랜잭션 및 롤백이 제공되지 않는다.
- 실시간 처리가 불가능하다. (색인된 데이터가 1초 뒤에나 검색이 가능하다.)
- 진정한 의미의 업데이트를 지원하지 않는다. (물론 있지만, 삭제했다가 다시 만드는 형태