📌Elastic Search란?
- 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진
- Apache Lucene(아파치 루씬) 기반의 java 오픈소스 분산 검색 엔진
- 방대한 양의 데이터를 신속하고 거의 실시간으로 저장, 검색, 분석한다.
- Log 및 데이터 분석 도구인 ELK 중 E에 해당한다.
- 분석 및 저장 기능을 담당한다.
- Logstatsh로 부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 있는 정보를 획득한다.
📌장단점
📖장점
- 샤드를 통해 규모가 수평적으로 늘어날 수 있다. (Scale out)
- Replica를 통해 데이터의 안전성을 보장한다. (고가용성)
- Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없다.
- 데이터 CRUD 작업은 HTTP Restful API를 통해 수행한다.
📖단점
- elasticsearch는 인메모리 버퍼를 사용하므로 쓰기와 동시에 읽기 작업을 할 경우, 세그먼트가 생성되기 전까지는 해당 데이터를 검색할 수 없다.
- 트랜잭션을 지원하지 않는다.
- 진정한 의미의 업데이트를 지원하지 않는다.
- 세그먼트에서 데이터가 삭제될 경우 Soft-Delete를 한다. (삭제 flag = true)
- 세그먼트에서 데이터가 수정될 경우 Soft-Delete를 하고, 수정된 데이터를 새로운 세그먼트로 생성한다.
📌비교
📖 Elasticsearch vs RDBMS vs MongoDB
📚Elasticserarch의 특징
1) Elasticsearch는 JSON 문서로 비교적 복잡한 데이터 구조로 저장한다.
2) 인덱스는 최적화 된 문서의 모음으로 생각될 수 있으며 각 문서는 데이터를 포함하는 키-값(key-value) 쌍인 필드의 모음이다.
3) 기본적으로 Elasticsearch는 모든 필드의 모든 데이터를 인덱싱하고 각 인덱싱 된 필드에는 최적화 된 전용 데이터 구조가 존재한다.→ Elasticsearch가 매우 빠른 이유
📖 Elasticsearch vs RDBMS
📚차이점
- RDBMS : 하나의 데이터베이스에 여러 테이블을 가진다.
- Elasticsearch : 7.0 이상부터는 하나의 인덱스에는 하나의 타입만 가질 수 있도록 바뀌었다.
📖 CRUD vs Elasticsearch vs RDBMS
Elasticsearch도 클러스터 상태 확인, 인덱스에 대한 CRUD(생성, 읽기, 업데이트 삭제) 및 검색 작업 실행, 필터링 및 집계 같은 고급 검색 작업 수행을 위해 REST API를 제공한다.
📌 사용처
- 애플리케이션 검색
- 웹사이트 검색
- 엔터프라이즈 검색
- 로깅과 로그 분석
- 보안 분석
- 비즈니스 분석
참고 )
https://neulpeumbomin.tistory.com/19?category=999563
https://steady-coding.tistory.com/573