ELK stack


빅데이터를 다루기 위한 스택으로 Elasticsearch, Logstash, Kibana를 가리킴.

데이터를 수집하고, 빠르게 분석하고, 보기 좋게 시각화하는데 필요.

Logstash는 데이터를 가리지 않고(csv든, sql 테이블이든) es에 수집해주고, kibana는 es의 데이터를 화면에 보기좋게(단 한줄의 fe코드 없이) 보여준다

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6c724ef5-a74c-4e20-98d0-a4071db6624d/Untitled.png

Basic Concept


https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c8d3534f-6c7d-4920-9c17-960ca02066ad/Untitled.png

Elasticsearch의 저장방법

어떤 텍스트(keyword)가 어떤 document에서 발견되는지를 저장한다(마치 hashtable). 이 때문에 키워드를 검색하면 어떤 document가 그 keyword를 저장하고 있는지를 바로 알 수 있다. O(1)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/17131e4f-f5a1-4567-8cdf-412ccc84f355/Untitled.png

반면, RDB의 경우 각 record에서 값을 비교해가며 그 keyword가 포함되어있는지 일일이 확인해야 한다 O(n) . 때문에 RDB와 비교했을 때, ES를 사용해서 검색하는것이 훠어어어얼씬 빠르다.

ES data structure

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6f3c676f-21db-44b7-b08b-f34979b540f2/Untitled.png

Elasticsearch data structure

index안에 type, type안에는 document, document들은 같은 property 들을 가지고 있다. 이를 RDB와 비교하면 아래 그림과 같다. 또한, ES는 REST API를 사용하여 data를 추가, 조회, 수정, 삭제한다(CRUD).

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ad72c620-9bb5-4c33-ae85-eb7f7458b4fd/Untitled.png

ES vs RDB (structure)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/68aeca7e-0c3a-4cd8-ba58-9c1d966f03d2/Untitled.png

ES vs RDB (query)

Mapping

RDB에서 schema에 해당하는 개념. Mapping이 없어도 ES에 데이터를 넣을 '수' 는 있다. 그러나, mapping없이 데이터를 넣는 것은 매우 위험하다. Mapping없이는 ES 가 각 field의 data type을 알지 못하기 때문이다(숫자-문자열, 날짜-문자열 등) . 이렇게 type이 잘못 지정되는 경우 kibana에서 시각화 할 때 한계가 생긴다.(geolocation, date 등)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b2b937a2-fb77-4d13-9845-cd2f6763b213/Untitled.png

mapping example

데이터를 추가하기 전에 미리 mapping을 만들어 놓거나, 이미 data가 들어가 있다면 mapping을 추가하여 분석 및 시각화에 적극 활용하는 편이 좋다.