ElasticSearch
- 분산 검색 엔진으로 보통 Cluster구성하고, shard로 데이터 저장하며 replica를 저장하기 때문에 높은 HA를 제공한다.
- 실시간으로 색인되어 데이터 검색과 분석 가능
- JSON 기반으로 저장해서 Rest API 기반으로 처리한다.
<row 기반>
<Inverted Index 기반>
Analzer
데이터가 들어오면 Tokernizer, Token Filter가 특정 기준으로 토큰을 분리해서 검색 가능하도록(searchable) 가공한다.
Term Query vs Full-Text Query
Term Query경우에는 analyzer거치지 않고 검색어와 일치하는 문서 찾기. 정형 데이터 예시로는 날짜, IP주소, 제품ID 등.
Full-Text Query경우에는 analyzer 거쳐서 좀 더 복잡한 조회에 적합
RDB와 차이점
RDB는 row기반으로 데이터 저장하지만, ES는 단어 기반(Inverted Index)로 저장한다. (일반적인 NoSQL도 역색인 지원X) 해당 단어만 찾으면 포함된 문서 위치 알 수 있다.
단점
Rollback 지원 하지 않는다.
update 지원하지 않는다. 기존 문서 delete -> insert 과정을 거친다.
Kibana
ElasticSearch에 있는 데이터를 검색하여 분석 및 시각화한다. Histograme, Geo 맵 등 여러 시각화를 편리하게 할 수 있다. ElasticSearch의 결과를 보여주는 것이기 때문에 ElasticSearch가 필수로 선행된다.
대표적인 카테고리
ElasticSearch의 Index에있는 데이터 탐색 시 사용
DashBoard
ELK 아키텍처 한계
1. 사용자 증가로 처리 용량 한계
LogStash는 단일 Instance기 때문에 분산 작업을 하지 못한다. 물론 LogStash를 여러개 두어 병렬 처리를 할 수 있지만 클러스터 모드가 없기 때문에 dead Instance 작업을 하지 않는다.
2. 더 많은 데이터 통해 분석 필요
현재 LogStash에서 ElasticSearch에 데이터가 넘어갈 때 고객의 정보가 더 있으며 좋겠다. 그럴 때는 Redis에 미리 고객 데이터를 넣고 LogStash에서 filter에서 Redis에 있는 정보를 추가할 수 있다.
Reference
logstash
https://blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=222153700165
https://ohahohah.com/TIL/ElasticStack/logstash.html
'빅데이터 > ELK' 카테고리의 다른 글
[ELK] Logstash (0) | 2022.08.12 |
---|