Logstash란?

Logstash는 Elasticsearch와 함께 사용되는 데이터 수집 및 처리 도구로, 다양한 리소스에서 데이터를 수집하고 필요한 형식으로 변환하여 Elasticsearch에 색인화하는 데 사용된다.

Logstash가 처리하는 Data Flow는 크게 세 단계로 이루어져 있다.

Input ➡️ Filter ➡️ Output

Inputs: Beats, RDB 등 다양한 저장소로부터 데이터를 입력받는다.

Filter: 입력받은 데이터를 수정, 필터링, 삭제 등 데이터를 가공 할 수 있다.

Output: ES, Email, Kafka등 다양한 데이터 저장소로 데이터를 전송한다.

Elasticsearch(ES)

ES는 Apache Lucene(고성능 풀 텍스트 검색 엔진 라이브러리)기반의 java 오픈 소스 분산 검색 엔진이다. 앞선 글 에서 ES의 특징에 대해 작성해두었기 때 여기선 ES사용한 이유 중 가장 큰 이유인 Full-text search engine 특징에 대해서만 자세히 다뤄보겠다!

Full-text search engine

Lucene은 기본적으로 **역파일 색인(inverted file index)**라는 구조로 데이터를 저장하고 저장된 데이터를 검색할 수 있다. 이러한 특성을 전문 검색 (Full-Text Search) 이라한다.

Elasticsearch는 Lucene을 기반으로 하며, 동일한 역파일 색인 구조를 활용하여 가공된 텍스트를 검색 할 수 있다.

역파일 색인은 단어를 객체의 Key로 하여 문서 ID를 값으로 갖는 맵 형태로 저장되어 있어, 검색어를 포함하는 문서를 빠르게 찾을 수 있다.

예를 들어, 다음과 같은 세 개의 문서가 있다고 가정해보면

  1. 문서 1: "The quick brown fox"
  2. 문서 2: "Jumped over the lazy dog"
  3. 문서 3: "The brown fox jumped"