ELK/Elasticsearch
[Elasticsearch] Elasticsearch란?
박만자
2022. 7. 26. 13:51
Elasticsearch
Elasticsearch는 아파치 루씬(Apache Lucene)기반의 오픈 소스 분산 검색 엔진입니다. Elasticsearch는 NoSQL 기반의 문서 지향 데이터베이스로 JSON 형식의 데이터를 저장하고 검색(Query DSL)할 수 있으며, 비정형 데이터를 색인하고 검색하는 것이 가능하고, 데이터를 기반으로 분석 작업을 진행할 수도 있습니다.
Logstash나 API를 사용해 Elasticsearch로 데이터를 전송하고, Kibana와 함께 사용해 데이터를 시각화하여 대시보드를 구축할 수 있습니다.
Elasticsearch 특징
- 준 실시간 검색 엔진
- 실시간이라고 느껴질 만큼 색인된 데이터가 빠르게 검색된다.
- 내부적으로 복잡한 과정을 거치기 때문에 완전 실시간은 아니다.
- REST API
- RESTful한 인터페이스를 제공하여 운영체제, 시스템에 관계없이 다양한 플랫폼에서 활용이 가능하다.
- 요청/응답에 JSON 형식의 데이터를 사용한다.
- 전문 검색
- 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색할 수 있다.
- 통계 분석
- 로그 데이터를 수집하여 통계 분석에 활용할 수 있다.
- Kibana를 연결하면 실시간으로 로그를 분석하고 시각화할 수 있다.
- Schemaless
- 입력될 데이터에 대해 미리 정의하지 않아도 동적으로 스키마를 생성할 수 있다.
- Multi-tenancy
- 검색할 필드명으로 여러 인덱스를 한번에 조회할 수 있다.
- 확장성
- 한대 이상의 노드를 클러스터로 구성하여 높은 안정성을 이루고 부하를 분산할 수 있다.
- 분산 환경에서 데이터는 샤드(shard)라는 단위로 나눈다.
- 역색인
- 특정 단어를 찾을때 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있다.
- Document-Oriented
- 여러 계층 구조의 문서로 저장이 가능하며, 계층 구조로된 문서도 한번의 쿼리로 쉽게 조회할 수 있다.
Elasticsearch 단점
- 전체적인 클러스터 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없다.
- 문서(데이터)를 수정(Update)하지 않는다. 기존 문서를 삭제(Delete)하고 다시 삽입(Insert)한다.
Elasticsearch vs SQL
Elasticsearch | RDBMS |
field | column |
document | row |
index | table |
implicit | schema |
cluster instance | catalog or database |
참고