Elasticsearch는 Apache Lucene을 기반으로 구축된 무료 오픈 소스 검색 및 분석 엔진입니다. Elasticsearch는 분산되어 있으며 숫자, 텍스트, 정형, 비정형 및 지리 공간 데이터를 포함한 모든 데이터 유형을 지원합니다. Elasticsearch는 간단한 REST API와 함께 제공되며 확장성 및 빠른 검색을 위한 기능을 제공합니다.
Elasticsearch는 데이터 수집, 저장, 보강, 시각화 및 분석을 포함하는 오픈 소스 도구 세트인 Elastic Stack의 중요한 부분입니다. 스택에서 주목할 만한 도구로는 Elasticsearch, Logstash 및 Kibana(ELK)가 있습니다.
Elasticsearch 아키텍처는 Lucene 인덱싱 빌드를 활용하고 아키텍처를 여러 노드에 분산될 수 있는 샤드라는 작은 구성 요소로 분리하는 분산 모델과 결합합니다.
이 문서에서는 다음 내용을 학습합니다:
Elasticsearch는 멀티 테넌시(multi-tenancy)를 지원하고 실시간에 가까운 검색을 제공하는 확장 가능한 검색 및 분석 솔루션입니다. Elasticsearch를 사용하여 모든 유형의 데이터와 다양한 위치에 대한 검색을 활성화할 수 있습니다. 엔진은 여러 위치에서 데이터를 수집하여 저장하고, 미리 정의된 수동 또는 자동 매핑에 따라 데이터를 인덱싱합니다.
Elasticsearch는 분산 아키텍처에서 작동하기 때문에 사용자는 거의 실시간으로 방대한 양의 데이터를 검색하고 분석할 수 있습니다. 또한 Elasticsearch는 검색 프로세스에 확장성을 도입하여 단 하나의 머신으로 시작하여 수백 개까지 확장할 수 있습니다.
Elasticsearch를 사용하여 문서 검색, 제품 검색 및 이메일 검색과 같은 모든 기능을 갖춘(전체 텍스트라고도 함) 검색 클러스터를 실행할 수 있습니다. 그러나 이를 위해서는 높은 수준의 기술과 경험이 필요합니다. 또한 Elasticsearch를 사용하여 슬라이싱 및 다이싱 대기 중인 데이터와 메트릭, 추적 및 로그와 같은 범주로 그룹화해야 하는 데이터를 저장할 수 있습니다.
Elasticsearch는 온프레미스뿐만 아니라 다양한 클라우드 환경에 배포할 수 있습니다. Elasticsearch를 자체 호스팅하거나 AWS Elasticsearch와 같은 클라우드 서비스를 사용할 수 있습니다.
Elasticsearch는 beats라고 하는 배송 에이전트를 사용하여 여러 소스의 원시 데이터를 Elasticsearch로 전송합니다. 데이터가 Elasticsearch로 전송된 후 엔진은 인덱싱을 위해 데이터를 구문 분석, 정규화, 보강 및 준비하는 데이터 수집 프로세스를 실행합니다. 데이터가 인덱싱된 후 사용자는 복잡한 쿼리를 실행하고 집계를 사용하여 복잡한 데이터 요약을 검색할 수 있습니다.
시각화 및 관리를 위해 Elastic Stack은 사용자가 파이 차트, 맵, 선 그래프 및 히스토그램과 같은 실시간 데이터 시각화를 생성할 수 있는 Kibana라는 툴을 제공합니다. 또한 Kibana를 사용하면 대시보드를 공유하고, Canvas를 사용하여 사용자 지정 동적 인포그래픽을 생성하고, Elastic Maps를 사용하여 지리 공간 데이터를 시각화할 수 있습니다.
Elasticsearch 아키텍처는 확장성과 유연성을 위해 구축되었습니다. 핵심 구성 요소는 Elasticsearch 클러스터, 노드, 샤드 및 분석기입니다.
Elasticsearch 클러스터는 데이터를 저장하는 노드 그룹으로 구성됩니다. 클러스터에서 실행을 시작하는 노드 수와 가상 또는 물리적 서버의 IP 주소를 지정할 수 있습니다. 모든 구성 설정이 포함된 config/elasticsearch.yml 파일에서 이 정보를 지정할 수 있습니다.
Elasticsearch 클러스터의 노드는 서로 연결되어 있으며, 각 노드에는 클러스터 데이터의 작은 청크가 포함되어 있습니다. 필요한 만큼 많은 클러스터를 실행할 수 있습니다. 그러나 일반적으로 하나의 노드로 충분합니다. 시스템은 새 노드가 시작될 때 자동으로 클러스터를 생성합니다. 노드는 검색 및 인덱싱을 담당하는 전체 클러스터 프로세스에 참여합니다.
일반적으로 노드라는 용어는 클러스터의 일부로 작동하는 서버를 나타냅니다. Elasticsearch에서 노드는 인스턴스이지 머신이 아닙니다. 즉, 단일 머신에서 여러 노드를 실행할 수 있습니다. Elasticsearch 인스턴스는 하나 이상의 클러스터 기반 노드로 구성됩니다. 기본적으로 Elasticsearch 인스턴스가 시작되면 노드도 실행되기 시작합니다.
Elasticsearch 노드를 구성하는 세 가지 주요 옵션은 다음과 같습니다.
Elasticsearch 아키텍처는 통신을 위해 두 가지 주요 포트를 사용합니다.
각 인덱스에 저장할 수 있는 문서 수에는 제한이 없습니다. 그러나 인덱스가 호스팅 서버의 스토리지 제한을 초과하면 Elasticsearch가 충돌할 수 있습니다. 이 문제를 방지하기 위해 인덱스는 샤드라고 하는 작은 조각으로 분할됩니다.
샤드는 Elasticsearch 아키텍처의 구성 요소 역할을 하는 작고 확장 가능한 인덱싱 단위입니다. 샤드를 사용하면 작업을 분산하고 전반적인 성능을 개선할 수 있습니다. 인덱스를 생성한 후 필요한 만큼 샤드를 생성할 수 있습니다. 각 샤드는 클러스터의 어느 곳에서나 호스팅할 수 있는 독립적인 Lucene 인덱스로 작동합니다.
Elasticsearch에서 복제본은 인덱스 샤드의 복사본입니다. 복제본은 백업 및 복구를 위한 장애 조치(fail-safe) 메커니즘으로 사용됩니다. 복제본은 원래(기본) 샤드가 포함된 노드에 배치되지 않습니다.
가용성을 보장하기 위해 복제본은 다른 위치에 저장됩니다. 인덱스를 만든 후 복제본을 정의하고 필요한 만큼 복제본을 만들 수 있습니다. 즉, 기본 샤드보다 더 많은 복제본을 저장할 수 있습니다.
분석기는 구와 표현식을 구성 용어로 구문 분석하는 역할을 합니다. 이는 인덱싱 프로세스 중에 발생합니다. 각 분석기는 하나의 토크나이저와 여러 토큰 필터로 구성됩니다. 특정 표현식이 발견되면 토크나이저는 문자열을 미리 정의된 용어로 분할할 수 있습니다.
Elasticsearch 아키텍처는 JSON 객체로 저장된 문서 검색을 지원하도록 설계되었습니다. Elasticsearch는 복잡한 데이터 및 쿼리를 처리하는 데 도움이 되는 중첩 구조를 지원합니다. 정보를 추적하기 위해 Elasticsearch는 메타데이터를 나타내는 밑줄이 앞에 붙은 키를 사용합니다.
NetApp Cloud Volumes ONTAP은 업계 최고의 엔터프라이즈급 스토리지 관리 솔루션으로, AWS, Azure, Google Cloud에서 안전하고 검증된 스토리지 관리 서비스를 제공합니다. Cloud Volumes ONTAP은 최대 368TB의 용량을 지원하며, 파일 서비스, 데이터베이스, DevOps 또는 기타 엔터프라이즈 워크로드 등 다양한 사용 사례를 지원하고, 고가용성, 데이터 보호, 스토리지 효율성, Kubernetes 통합 등을 포함한 강력한 기능 세트를 제공합니다.
Cloud Volumes ONTAP은 클라우드에서 SAN 스토리지를 관리하기 위한 고급 기능을 지원하며, NoSQL 데이터베이스 시스템뿐만 아니라 클라우드 빅 데이터 분석 클러스터에서 직접 액세스할 수 있는 NFS 공유도 지원합니다.
또한 Cloud Volumes ONTAP은 씬 프로비저닝, 데이터 압축, 중복 제거 등의 스토리지 효율성 기능을 제공하여 스토리지 설치 공간과 비용을 최대 70%까지 줄여줍니다.
NetApp을 사용한 Elasticsearch 배포 최적화에 대한 자세한 내용은 무료 eBook Optimize Elasticsearch Performance and Costs with Cloud Volumes ONTAP을 지금 다운로드하십시오.