Elasticsearch
https://www.elastic.co/kr/what-is/elasticsearch
오픈소스 검색엔진
- 아파치 재단의 루씬(Lucene)을 기반으로 개발된 오픈소스 검색엔진
- 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진
- 분산형 및 개방형을 특징으로 한다.
Elasticsearch 사용 사례
- 애플리케이션 검색
- 웹사이트 검색
- 엔터프라이즈 검색
- 로깅과 로그 분석
- 인프라 메트릭과 컨테이너 모니터링
- 애플리케이션 성능 모니터링
- 위치 기반 정보 데이터 분석 및 시각화
- 보안 분석
- 비즈니스 분석
Elasticsearch 지원 언어
- 자바
- 자바스크립트(Node.js)
- Go
- .NET(C#)
- PHP
- Perl
- Python
- Ruby
Full Text Search(전문검색)
전문 검색이란 내용을 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것을 말한다.
관계형 데이터베이스는 기본 쿼리 및 색인 구조의 한계로 인해 전문 검색에 적합하지 않지만 엘라스틱서치는 다양한 기능별, 언어별 플러그인을 조합해 빠르게 검색할 수 있다.
통계 분석
비정형 로그 데이터를 수집하고 한곳에 모아 통계 분석을 할 수 있다.
Schemaless(스키마리스)
엘라스틱서치는 정형화되지 않은 다양한 형태의 문서도 자동으로 색인하고 검색할 수 있다.
RESTFul API
HTTP 기반의 RESTFul API를 지원하고 요청 및 응답에 JSON 형식을 사용해 개발 언어, 운영체제, 시스템에 관계없이 이기종 플랫폼에서도 이용 가능하다.
Multi-tenancy(멀티테넌시)
서로 상이한 인덱스일지라도 검색할 필드명만 같으면 여러 개의 인덱스를 한번에 조회할 수 있다.
Document-Oriented
여러 계층의 데이터를 JSON 형식의 구조화된 문서로 인덱스를 저장할 수 있다.
계층 구조로 문서도 한번의 쿼리로 쉽게 조회할 수 있다.
Inverted Index(역색인)
루씬 기반의 검색엔진으로 역색인을 지원한다.
역색인이란 마지막 페이지에서 제공하는 색인 페이지와 비슷하게 제공되는 특수한 데이터 구조
확장성과 가용성
분산 환경에서 데이터는 샤드(shard)라는 작은 단위로 나뉘어 제공되며, 인덱스를 만들 때마다 샤드의 수를 조절할 수 있다. 이를 통해 데이터의 종류와 성격에 따라 데이터를 분산해서 빠르게 처리할 수 있다.
Elasticsearch 약점
실시간이 아니다.
색인된 데이터는 통상적으로 1초 뒤에나 검색이 가능하다. 색인된 데이터는 내부적으로 commit과 flush 같은 과정을 거치기 때문에 실시간이 아니다.
트랙잭션(transaction)과 롤백(rollback) 기능을 제공하지 않는다.
엘라스틱서치는 기본적으로 분산 시스템으로 구성한다.
전체적인 클러스터의 성능 향상을 위해 시스템적으로 비용 소모가 큰 롤백이나 트랙젝션을 지원하지 않아 최악의 경우 데이터 손실 위험이 있다.
데이터의 업데이트를 제공하지 않는다.
엘라스틱서치는 업데이트 명령이 요청될 경우 기존 문서를 삭제하고 변경된 내용으로 새로운 문서를 생성하는 방식을 사용한다. 단순 업데이트에 비해서는 상대적으로 많은 비용이 발생한다.
References
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] Elasticsearch snapshot 데이터 연동 (0) | 2022.01.15 |
---|---|
[Kibana] Kibana 설치 (0) | 2022.01.15 |
[Elasticsearch] Elasticsearch 설치 (0) | 2022.01.14 |
[OpenJDK] OpenJDK 설치 (0) | 2022.01.14 |
[Elasticsearch] 검색 시스템 (0) | 2022.01.13 |