Elasticsearch-기본 개념
Elasticsearch는 Apache Lucene 기반 검색 서버입니다. Shay Banon이 개발하여 2010 년에 게시했습니다. 현재 Elasticsearch BV에서 유지 관리하고 있습니다. 최신 버전은 7.0.0입니다.
Elasticsearch는 실시간 분산 및 오픈 소스 전체 텍스트 검색 및 분석 엔진입니다. RESTful 웹 서비스 인터페이스에서 액세스 할 수 있으며 스키마가없는 JSON (JavaScript Object Notation) 문서를 사용하여 데이터를 저장합니다. Java 프로그래밍 언어를 기반으로하므로 Elasticsearch는 다른 플랫폼에서 실행할 수 있습니다. 이를 통해 사용자는 매우 많은 양의 데이터를 매우 빠른 속도로 탐색 할 수 있습니다.
일반적인 특징
Elasticsearch의 일반적인 기능은 다음과 같습니다.
Elasticsearch는 정형 및 비정형 데이터의 최대 페타 바이트까지 확장 가능합니다.
Elasticsearch는 MongoDB 및 RavenDB와 같은 문서 저장소의 대체로 사용할 수 있습니다.
Elasticsearch는 비정규 화를 사용하여 검색 성능을 개선합니다.
Elasticsearch는 인기있는 엔터프라이즈 검색 엔진 중 하나이며 현재 Wikipedia, The Guardian, StackOverflow, GitHub 등과 같은 많은 대기업에서 사용되고 있습니다.
Elasticsearch는 오픈 소스이며 Apache 라이선스 버전 2.0에서 사용할 수 있습니다.
주요 개념
Elasticsearch의 핵심 개념은 다음과 같습니다.
마디
Elasticsearch의 단일 실행 인스턴스를 나타냅니다. 단일 물리적 및 가상 서버는 RAM, 스토리지 및 처리 능력과 같은 물리적 리소스의 기능에 따라 여러 노드를 수용합니다.
클러스터
하나 이상의 노드 모음입니다. 클러스터는 전체 데이터에 대해 모든 노드에서 집합 적 인덱싱 및 검색 기능을 제공합니다.
인덱스
다양한 유형의 문서와 해당 속성의 모음입니다. 인덱스는 또한 성능 향상을 위해 샤드 개념을 사용합니다. 예를 들어, 문서 세트에는 소셜 네트워킹 애플리케이션의 데이터가 포함됩니다.
문서
JSON 형식으로 정의 된 특정 방식의 필드 모음입니다. 모든 문서는 유형에 속하며 색인 내부에 있습니다. 모든 문서는 UID라는 고유 식별자와 연결됩니다.
사금파리
인덱스는 수평으로 샤드로 세분됩니다. 즉, 각 샤드에는 문서의 모든 속성이 포함되지만 인덱스보다 JSON 개체 수가 적습니다. 수평 적 분리로 인해 샤드는 모든 노드에 저장할 수있는 독립 노드가됩니다. 기본 샤드는 인덱스의 원래 수평 부분이며 이러한 기본 샤드는 복제본 샤드로 복제됩니다.
복제본
Elasticsearch를 통해 사용자는 인덱스 및 샤드의 복제본을 생성 할 수 있습니다. 복제는 장애 발생시 데이터 가용성을 높이는 데 도움이 될뿐만 아니라 이러한 복제본에서 병렬 검색 작업을 수행하여 검색 성능을 향상시킵니다.
장점
Elasticsearch는 Java로 개발되어 거의 모든 플랫폼에서 호환됩니다.
Elasticsearch는 실시간입니다. 즉, 1 초 후에 추가 된 문서를이 엔진에서 검색 할 수 있습니다.
Elasticsearch가 분산되어있어 모든 대규모 조직에서 쉽게 확장하고 통합 할 수 있습니다.
Elasticsearch에있는 게이트웨이 개념을 사용하면 전체 백업을 쉽게 만들 수 있습니다.
Apache Solr와 비교할 때 Elasticsearch에서 멀티 테넌시를 처리하는 것은 매우 쉽습니다.
Elasticsearch는 JSON 객체를 응답으로 사용하므로 다양한 프로그래밍 언어로 Elasticsearch 서버를 호출 할 수 있습니다.
Elasticsearch는 텍스트 렌더링을 지원하지 않는 문서 유형을 제외한 거의 모든 문서 유형을 지원합니다.
단점
Elasticsearch는 CSV, XML 및 JSON 형식으로 가능한 Apache Solr와 달리 요청 및 응답 데이터 (JSON에서만 가능) 처리 측면에서 다국어 지원을 제공하지 않습니다.
때때로 Elasticsearch에는 Split brain 상황의 문제가 있습니다.
Elasticsearch와 RDBMS의 비교
Elasticsearch에서 인덱스는 RDBMS (Relation Database Management System)의 테이블과 유사합니다. 모든 인덱스가 Elasticsearch의 문서 모음 인 것처럼 모든 테이블은 행 모음입니다.
다음 표는 이러한 용어를 직접 비교합니다.
Elasticsearch | RDBMS |
---|---|
클러스터 | 데이터 베이스 |
사금파리 | 사금파리 |
인덱스 | 표 |
들 | 기둥 |
문서 | 열 |