7. Elastic Saerch의 아키텍처

초기에는 Elastic search를 사용할 때 한 노드가 시작되는데 노드는 엘라스틱 서치의 데이터 저장 인스턴스다. 필요한 경우 수 테라바이트의 데이터를 저장할 수 있도록 원하는 만큼 노드를 실행할 수 있다.

  • 각 노드는 데이터의 일부를 저장한다.
  • 각 노드에 데이터 일부를 저장하면, 여러 가상 머신 또는 물리적인 머신에서 데이터를 저장할 수 있고 많은 테라바이트의 데이터를 저장할 수 있다.
  • 각 머신의 디스크 용량이 몇백 기가바이트에 불과하더라도 저장할 수 있다.

결과적으로 같은 컴퓨터에서 어떤 노드는 실행할 수 있게 된다. 그리고 여러개의 가상 컴퓨터나 컨테너이를 다루지 않아도 사용이 가능하다.

1. 클러스터링?

  • 각 노드는 클러스터라는 것에 속해 있다.
  • 클러스터는 관련된 노드들의 집합체다. 모든 데이터를 포함하고 있다.
  • 여러 개의 클러스터로 나누는 이유는 논리적으로 분리하고, 다르게 구성하기 위함이다.
  • 하지만 일반적으로 단일 클러스터만으로 충분하다.
  • 노드를 시작할 때 클러스터가 자동으로 만들어진다. (노드가 시작되면 이미 존재하는 클러스터에 자동으로 합류된다. 또는 노드에만 구성된 자신만의 클러스터를 만든다.)
  • 엘라스틱 서치의 노드는 다른 노드가 존재하지 않아도 항상 클러스터의 일부다.

가용성과 확장성 측면에서 단일 노드만 가지면 문제가 생기지만, 개발 단계 목적에서 단일 노드로 구성된 클러스터를 갖는 건 아무 문제 없다.

2. 저장되는 단위

클러스터 안에 저장하는 데이터 단위를 문서(documents)라도 불른다.

  • 저장되는 파일은 json 형식으로 원하는 형태로 뭐든지 담아낸다.
  • 문서를 색인화 하면 엘라스틱 서치에서 보낸 오리지널 JSON 개체가 저장되고 엘라스틱 서치가 내부적으로 사용하는 일부 메타데이터도 저장된다.
  • 엘라스틱 서치에서 보내는 JSON 개체는 ‘_source’라는 필드에 저장된다.

모든 데이터는 인덱스에 저장된다. 논리적으로 인덱스 그룹 문서를 만들고 확장성과 관련된 구성 옵션을 제공한다.

인덱스는 글의 목록이고 특징을 갖고 있고, 논리적으로 연관돼 있다.

  • 노드는 엘라스틱 서치에 실행 중인 인스턴스를 의미한다.
  • 물리적인 장치, 가상 컴퓨터 또는 Docker 컨테이너 안에서 실행된다.

결과적으로 데이터는 문서로 저장되며, 단위의 정보를 문서로 저장한다. 문서는 무엇이든 표현 가능하며

사람, 회사, 제품등으로 표현한다.

각 문서는 인덱스에 속하며 ISA(**명령어 집합체)**가 관련 문서를 논리적으로 분류하는 방식이다.

LIST