Elasticsearch - 분산형 검색 엔진

..·2024년 6월 18일
0

Elasticsearch

목록 보기
1/7

Elasticsearch란?

확장 가능한 분산형 검색 엔진

  • JSON 문서 형식의 데이터를 LogstashAmazon Kinesis Data Firehose와 같은 수집 도구나 API를 사용해 Elasticsearch로 전송
  • Elasticsearch는 자동으로 기존 문서를 저장하고, 클러스터의 인덱스에 문서에 대한 검색 가능한 참조를 추가함
  • Elasticsearch API를 사용해 문서를 검색하고 조회할 수 있습니다.
  • 시각화 도구인 Kibana를 Elasticsearch와 함께 사용해 데이터를 시각화하고 대화식 대시보드를 구축할 수 있음


Elasticsearch 특징

1. 오픈 소스

2. 실시간 분석

Elasticsearch는 Hadoop과 달리 Elasticsearch 클러스터가 실행되고 있는 동안에는 계속해서 데이터가 입력(검색 엔진에서는 색인 – indexing 이라고 표현)되고, 그와 동시에 실시간에 가까운 (near real-time) 속도로 색인된 데이터의 검색과 집계가 가능하다.

3. 전문(full text) 검색 엔진

색인된 모든 데이터를 역파일 색인 구조로 저장하여 가공된 텍스트를 검색하는 전문(full text) 검색 엔진이다. 내부적으로는 역파일 색인 구조로 데이터를 저장하지만, 사용자의 관점에서는 JSON 형식으로 데이터를 전달한다. key-value 형식이 아닌 문서 기반이기 때문에 복합적인 정보를 포함하는 형식의 문서를 있는 그대로 저장이 가능하며 사용자가 직관적으로 이해하고 사용할 수 있다.

🔎 역색인 (Inverted Index)

키워드를 통해 문서를 찾는 방식으로, 추출된 각 키워드가 포함된 문서끼리 정리하여 검색 키워드가 포함된 문서들을 빠르게 찾을 수 있다.

역색인 구조는 키워드(Term)가 포함된 문서의 항목을 관리하여 원하는 검색어가 포함된 문서를 빠르게 찾을 수 있다.
역색인을 사용하면 데이터가 늘어나도 가리키는 ID(PK)의 배열 데이터가 증가하는 것이므로 큰 속도 저하가 발생하지 않는다.

4. RESTful API

Rest API를 기본으로 지원하며 모든 데이터 조회, 입력, 삭제를 HTTP 프로토콜을 통해 Rest API로 처리한다.

5. 멀티테넌시 (multitenancy)

데이터들은 Index라는 논리적인 집합 단위로 구성되며 서로 다른 저장소에 분산되어 저장된다. 서로 다른 인덱스들을 별도의 커넥션 없이 하나의 질의로 묶어서 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있는 특징을 멀티테넌시라고 한다.



Elasticsearch의 장점

1. 빠른 구축

간단한 REST 기반 API와 HTTP 인터페이스를 제공하고, 스키마 없는 JSON 문서를 사용해서 빠르게 구축할 수 있다.

2. 고성능

데이터를 병렬로 처리하여 빠르게 일치 항목을 찾을 수 있다.

3. 무료 도구 및 플러그인

시각화 및 보고서 도구인 Kibana가 함께 제공된다. BeatsLogstash도 제공하여 소스 데이터를 쉽게 전환하고 Elasticsearch 클러스터에 로드할 수 있다.

4. 실시간에 가까운 운영

빠르게 데이터를 읽고 처리하여 애플리케이션 모니터링처럼 실시간에 가까운 서비스에 활용할 수 있다.

5. 다양한 언어에 대한 지원

Java, Python, PHP, JavaScript, Node.js, Ruby 및 기타 여러 다양한 언어에 대해 지원한다.



마무리

공부를 하면서 가장 내가 해보고 싶은 일이 무엇일까 생각해 봤는데, 지금까지 가장 재밌었던 것은 결국 데이터를 다루는 과정이었다는 것이 생각났다. 정확하고 적합한 데이터를 전달하여 사용자가 만족할 수 있는 결과를 도출하는 검색 시스템을 구축해 보고 싶었고, 이를 위해서 Elasticsearch에 대해 알아보게 되었다.
지금은 단순히 개념을 이해하는 수준으로 알아봤지만, 실제로 Elasticsearch를 이용한 검색 기능을 구현하고 이외에도 빠른 속도와 정확한 결과를 낼 수 있는 다양한 방법과 기술에 대해 공부해야겠다.

참조

Elasticsearch 가이드북
Elasticsearch란 무엇인가요?
역색인이란?

0개의 댓글