엘라스틱서치는 클러스터라는 단위로 데이터를 제공한다. 클러스터는 하나 이상의 노드로 이루어져있고, 각 노드는 데이터 색인 및 검색 기능을 제공한다. 내부에는 루씬 라이브러리가 사용되고 엘라스틱서치의 근간을 이루는 핵심 모듈이다.

클러스터

클러스터는 데이터를 실제로 가지고 있는 노드들의 모음이다. 엘라스틱서치에서는 노드들을 논리적으로 확장해서 클러스터라고 부른다.

같은 클러스터 내의 데이터만 서로 공유가 가능하므로 연관된 노드들은 하나의 클러스터의 구성원으로 묶어야한다. 동일 클러스터 내부의 노드는 데이터 색인이나 검색 작업시 함께 작업을 수행하게 되고 장애 발생시 데이터 복구를 위해 서로 협력한다.

노드

엘라스틱서치가 실행된 인스턴들을 노드라고 부른다. 노드는 논리적인 클러스터를 이루는 구성원의 일부이며 실제 데이터를 가지고 있는 단위이기도 하다.

실행시 노드는 클러스터에 의해 UUID가 할당되고 클러스터 내에서는 할당된 UUID로 서로를 식별한다. 노드의 이름은 동일 클러스터내에서 노드를 구별하는 값이기 때문에 변경 시 신중해야한다.

노드는 내부에 다수의 인덱스를 가지고 있으며 각 인덱스는 다수의 문서를 가지고 있다.

인덱스

인덱스는 유사한 특성을 가지고 있는 문서를 모아둔 컬렉션이다. 클러스터 내부에 생성되는 모든 인덱스는 클러스터 내에서 유일한 인덱스명이여야 한다. 인덱스 명은 모두 소문자로 이루어져야한다.

문서

문서는 검색 대상이 되는 실제적인 데이터다. 문서는 인덱스의 기본 정보 단위이고 JSON 형식으로 표현된다. 문서는 물리적인 샤드 형태로 나눠져서 다수의 노드에 분산 저장된다.

샤드

데이터를 분산저장 하는 샤딩을 통해 수평 확장이 가능하다. 엘라스틱서치에서는 기본적으로 5개의 샤드로 데이터가 분산되도록 생성된다.