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
클러스터 데이터 베이스
사금파리 사금파리
인덱스
기둥
문서