Elastic Search
Elasticsearch는 분산형 Restful 검색 및 분석엔진이다. Elasticsearch의 주요 특징들은 다음과 같다.
- 역색인을 통한 빠른 검색을 지원
- 클러스터 구성을 통한 분산처리 및 고가용성
- Replica를 활용한 데이터 안정성 증대
- Shard 분배를 통한 선형적 확장(scale-out)
- RESTful API 지원
- Schemaless 지원
- 인덱스 기반의 타입 및 색인 방식 설정 지원
elasticsearch는 이러한 기능을 구현하기 위해 내부적으로 최적화된 물리적 구조와 논리적 구조를 갖고 있다.
Elasticsearch 구조
Elasticsearch의 논리적 구조
- 도큐먼트(Document)
Elasticsearch 최소 단위 데이터. (RDBMS Row)
- 타입(Type)
Document가 모여서 하나의 Type을 이룸.(RDBMS Table).
하지만 Elasticsearch 6.x까지만 지원하며, 현재는 Index가 역할을 대체함.
- 필드(Field)
Field는 Document에 들어가는 데이터 타입.(RDBMS Column)
RDBMS과의 차이점은 RDBMS에서는 하나의 Cloumn이 하나의 데이터 타입만 가질 수 있지만, Elasticsearch에서는 Field 하나가 여러개의 데이터 타입을 가질 수 있음.
- 매핑(Mapping)
RDBMS의 스키마와 비슷한 역할
필드와 필드의 속성 및 색인 방법을 정의함.
- 인덱스(Index)
여러개의 Type이 모여 한개의 Index를 이룸.(RDBMS의 Database)
Elasticsearch 7.x 부턴 Type이 사라져 하나의 인덱스에 다수의 도큐먼트가 포함되는 구조로 생각하면 됨.
Elasticsearch를 Cluster(분산환경)으로 구성했을 경우 Index는 여러 노드에 분산 저장/관리 가능.
Elasticsearch의 물리적 구조
- 노드(Node)
Elasticsearch Cluster를 구성하는 하나의 인스턴스.
하나의 논리적인 서버로 구성되어 데이터를 저장하고 클러스터의 색인화 및 검색 기능에 참여함.
단일 서버에 복수의 노드 설치가 가능하며, 상황에 맞게 노드를 설정해주어 구성하면 됨.
node.master = true
node.data = false
node.mi = false
node.ingest = false
<elasticsearch.yml 노드 설정 부분 예시>
마스터 노드(Master Node) : 클러스터 관리 노드로 노드 추가/제거, 인덱스 생성/삭제 등 클러스터의 전반적 관리 담당. 여러 개의 마스터 노드를 설정하면 자동으로 하나의 마스터 노드를 지정함.
node.master: true
데이터 노드(Data Node) : 데이터(Document)가 저장되는 노드. 데이트 노드는 인덱싱한 도큐먼트를 샤드 형태로 저장하여 데이터의 CRUD 작업과 검색, 집계 작업을 함.
node.data : true
머신러닝 노드(MI node) : 머신 러닝을 수행하는 노드.
node.mi: true
코디네이팅 노드(Coordinating Node) : 사용자의 요청을 받고 라운드로빈(Round Robin)방식으로 분산시켜주는 노드. 클러스터에 관련된 것은 마스터 노드로 넘기고 데이터 관련된 것은 데이터 노드로 넘김.
노드 종류 관련 옵션 전부 false
인제스트 노드(Ingest Node) : 데이터를 저장 시 전처리 과정(포맷 변경)등이 필요할 경우 해당 전처리 과정을 담당하는 노드.
node.ingest: true
<노드의 종류 및 역할>
- 샤드(Shard)
Elasticsearch는 여러 대의 노드를 효율적으로 활용하기 위해 데이터를 나눠 분산저장하게 되는데 그때의 데이터 단위를 샤드라고 함.
프라이머리 샤드(Primary Shard) : 데이터의 원본. 엘라스틱서치에서 데이터 업데이트 요청을 날리면 반드시 프라이머리 샤드에 요청을 하게 되고 해당 내용은 레플리카에 복제된다. 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 한다.
레플리카 샤드(Replica Shard) : 프라이머리 샤드의 복제본. 데이터 유실을 방지하고 가용성을 확보하기 위한 용도로 사용. 이 외에도 고가용성, 처리 속도 향상의 특징을 갖고 있음.
- 세그먼트(Segment)
세그먼트(Segment)란 엘라스틱서치에서 문서의 빠른 검색을 위해 설계된 자료구조. 각 샤드는 다수의 세그먼트로 구성되어 있음.
윈도우 설치
https://www.elastic.co/kr/downloads/past-releases/elasticsearch-7-16-3
Free and Open Search: The Creators of Elasticsearch, ELK & Kibana | Elastic
Elasticsearch can also be installed from our package repositories using apt or yum, or installed on Windows using an MSI installer package. See Repositories in the Guide.
www.elastic.co
원하는 버전을 다운로드 받습니다. 저는 7.16.3 버전을 받도록 하겠습니다.
설치하기
다운로드 받으면 zip파일이 나오는데 압축을 해제하고 bin폴더의 elasticsearch.bat를 구동합니다.
정상적으로 구동되면 브라우저를 열고 localhost:9200으로 접속해봅니다.
이것으로 엘라스틱서치를 간단하게 설치하고 구동된 모습을 볼 수 있습니다.
'ELASTIC STACK' 카테고리의 다른 글
ELK Stack (Elsatic Stack)이란? 개념, 정의 소개 (0) | 2022.02.02 |
---|