Elasticsearch란?

Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈 소스 검색 및 분석 엔진입니다. Elasticsearch는 Apache Lucene을 기반으로 구축되며, (현재 Elastic이라고 알려져 있는) Elasticsearch N.V.가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 중심 구성 요소입니다. 보통 (Elasticsearch, Logstash, Kibana의 머리글자를 따서) ELK Stack이라고 하는 Elastic Stack에는 이제 데이터를 Elasticsearch로 전송하기 위한 경량의 데이터 수집 에이전트들이 풍부하게 제공되는 컬렉션인 Beats가 포함되어 있습니다.

Elasticsearch는 어디에 사용되나요?

Elasticsearch의 속도와 확장성, 그리고 수많은 종류의 콘텐츠를 색인할 수 있는 능력은 다음과 같은 다양한 사용 사례에 이용될 수 있다는 뜻입니다.

  • 애플리케이션 검색
  • 웹사이트 검색
  • 엔터프라이즈 검색
  • 로깅과 로그 분석
  • 인프라 메트릭과 컨테이너 모니터링
  • 애플리케이션 성능 모니터링
  • 위치 기반 정보 데이터 분석 및 시각화
  • 보안 분석
  • 비즈니스 분석

Elasticsearch는 어떻게 작동하나요?

로그, 시스템 메트릭, 웹 애플리케이션 등 다양한 소스로부터 원시 데이터가 Elasticsearch로 흘러들어갑니다. 데이터 수집은 원시 데이터가 Elasticsearch에서 색인되기 전에 구문 분석, 정규화, 강화되는 프로세스입니다. Elasticsearch에서 일단 색인되면, 사용자는 이 데이터에 대해 복잡한 쿼리를 실행하고 집계를 사용해 데이터의 복잡한 요약을 검색할 수 있습니다. Kibana에서 사용자는 데이터를 강력하게 시각화하고, 대시보드를 공유하며, Elastic Stack을 관리할 수 있습니다.

Elasticsearch 인덱스는 무엇인가요?

Elasticsearch 인덱스는 서로 관련되어 있는 문서들의 모음입니다. Elasticsearch는 JSON 문서로 데이터를 저장합니다. 각 문서는 일련의 (필드나 속성의 이름)와 그에 해당하는 값(문자열, 숫자, 부울, 날짜, 의 배열, 지리적 위치 또는 기타 데이터 유형)을 서로 연결합니다.

Elasticsearch는 반전된 인덱스라고 하는 데이터 구조를 사용하는데, 이것은 아주 빠른 전체 텍스트 검색을 할 수 있도록 설계된 것입니다. 반전된 인덱스는 문서에 나타나는 모든 고유한 단어의 목록을 만들고, 각 단어가 발생하는 모든 문서를 식별합니다.

색인 프로세스 중에, Elasticsearch는 문서를 저장하고 반전된 인덱스를 구축하여 거의 실시간으로 문서를 검색 가능한 데이터로 만듭니다. 인덱스 API를 사용해 색인이 시작되며, 이를 통해 사용자는 특정한 인덱스에서 JSON 문서를 추가하거나 업데이트할 수 있습니다.

Logstash는 어디에 사용되나요?

Elastic Stack의 핵심 제품 중 하나인 Logstash는 데이터를 집계하고 처리하여 Elasticsearch로 전송하는 데 사용됩니다. Logstash는 서버 사이드 오픈 소스 데이터 처리 파이프라인으로, 사용자는 이를 이용해 다양한 소스에서 동시에 데이터를 수집하고, 이를 강화하고 변환한 다음, Elasticsearch에서 색인되도록 할 수 있습니다.

Kibana는 어디에 사용되나요?

Kibana는 Elasticsearch를 위한 시각화 및 관리 도구로서, 실시간 히스토그램, 선 그래프, 파이 차트, 지도 등을 제공합니다. Kibana에는 사용자가 자신의 데이터를 기반으로 사용자 정의한 동적 인포그래픽을 만들 수 있는 Canvas, 위치 기반 정보 데이터를 시각화하기 위한 Elastic Maps 같은 고급 애플리케이션도 포함됩니다.

Elasticsearch를 사용하는 이유는 무엇인가요?

Elasticsearch는 빠릅니다. Elasticsearch는 Lucene을 기반으로 구축되기 때문에, 전체 텍스트 검색에 뛰어납니다. Elasticsearch는 또한 거의 실시간 검색 플랫폼입니다. 이것은 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 아주 짧다는 뜻입니다. 이 대기 시간은 보통 1초입니다. 결과적으로, Elasticsearch는 보안 분석, 인프라 모니터링 같은 시간이 중요한 사용 사례에 이상적입니다.

Elasticsearch는 본질상 분산적입니다. Elasticsearch에 저장된 문서는 샤드라고 하는 여러 다른 컨테이너에 걸쳐 분산되며, 이 샤드는 복제되어 하드웨어 장애 시에 중복되는 데이터 사본을 제공합니다. Elasticsearch의 분산적인 특징은 수백 개(심지어 수천 개)의 서버까지 확장하고 페타바이트의 데이터를 처리할 수 있게 해줍니다.

Elasticsearch는 광범위한 기능 세트와 함께 제공됩니다. 속도, 확장성, 복원력뿐 아니라, Elasticsearch에는 데이터 롤업, 인덱스 수명 주기 관리 등과 같이 데이터를 훨씬 더 효율적으로 저장하고 검색할 수 있게 해주는 강력한 기본 기능이 다수 탑재되어 있습니다.

Elastic Stack은 데이터 수집, 시각화, 보고를 간소화합니다. Beats와 Logstash의 통합은 Elasticsearch로 색인하기 전에 데이터를 훨씬 더 쉽게 처리할 수 있게 해줍니다. Kibana는 Elasticsearch 데이터의 실시간 시각화를 제공하며, UI를 통해 애플리케이션 성능 모니터링(APM), 로그, 인프라 메트릭 데이터에 신속하게 접근할 수 있습니다.

Elasticsearch 자주 묻는 질문(FAQ)

Elasticsearch는 무료인가요?

그렇습니다. Elasticsearch의 오픈 소스 기능은 Apache 2 라이선스에 따라 무료로 사용할 수 있습니다. Elastic 라이선스에 따라 추가 무료 기능이 제공되며, 유료 구독은 알림과 머신 러닝 같은 고급 기능 이용 및 지원을 제공합니다.

Elasticsearch의 공식 배포는 어떤 것인가요?

공식 Elasticsearch 배포는 Elastic 웹사이트에서 제공됩니다.

Elasticsearch 프로젝트에는 누가 기여할 수 있나요?

Elasticsearch는 Elastic이 관리하는 오픈 소스 프로젝트입니다. 코드베이스에는 Elastic 내부와 외부 양쪽 모두의 개발자들의 기여가 포함됩니다.

누구나 Elasticsearch GitHub 리포지토리에서 풀 리퀘스트를 제출할 수 있습니다. Elastic은 코드베이스에 병합하기 전에 모든 풀 리퀘스트를 투명하게 검토합니다.

Elasticsearch 배포 옵션에는 어떤 것들이 있나요?

Elasticsearch는 Elasticsearch Service(아마존 웹 서비스(AWS), 구글 클라우드 플랫폼(GCP), 알리바바 클라우드에서 이용 가능)를 통해 호스트되는 관리형 서비스로 배포될 수 있으며, 또는 사용자가 다운로드하여 직접 자체 하드웨어나 클라우드에 설치할 수 있습니다. Elasticsearch 설명서에서 Elasticsearch 다운로드, 설치, 구성 지침을 보실 수 있습니다.

단일 콘솔에서 배포를 프로비저닝, 관리, 모니터링하고자 하지만 퍼블릭 클라우드 플랫폼을 사용하고 싶지 않으신 사용자를 위해, Elastic은 Elastic Cloud Enterprise(퍼블릭 또는 프라이빗 클라우드, 가상 머신, 베어메탈 하드웨어에서 배포 가능)와 프라이빗 구독 티어도 제공합니다.

Elasticsearch는 어떤 프로그래밍 언어를 지원하나요?

Elasticsearch는 다양한 언어를 지원하며, 다음을 위한 공식 클라이언트가 제공됩니다.

  • 자바
  • 자바스크립트(Node.js)
  • Go
  • .NET(C#)
  • PHP
  • Perl
  • Python
  • Ruby

Elasticsearch는 어떤 텍스트 언어를 지원하나요?

Elasticsearch는 아랍어에서부터 태국어에 이르기까지 34개의 텍스트 언어를 지원하며 각 언어에 대한 분석기를 제공합니다. Elasticsearch 언어 분석기 설명서에서 전체 목록을 찾아보실 수 있습니다. 사용자 정의 플러그인으로 그 밖에 다른 언어에 대한 지원도 추가하실 수 있습니다.

Elasticsearch는 REST API를 제공하나요?

그렇습니다. Elasticsearch는 클러스터 상태 확인, 인덱스에 대한 CRUD(생성, 읽기, 업데이트 삭제) 및 검색 작업 실행, 필터링 및 집계 같은 고급 검색 작업 수행을 위한 종합적이며 강력한 REST API 세트를 제공합니다.

Elasticsearch에 대한 더 자세한 정보는 어디에서 찾아볼 수 있나요?