-
04. 용어BackEnd/elasticsearch 2021. 9. 19. 10:00반응형
인덱스(Index)
데이터 저장 공간입니다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있습니다. 검색 시 인덱스 이름으로 문서 데이터를 검색하며, 여러 개의 인덱스를 동시에 검색하는 것도 가능합니다. 분산 환경으로 구성 시에는 하나의 인덱스가 여러 노드에 분산 저장되어 관리됩니다. 인덱스 생성 시 기본적으로 5개의 프라이머리(Primary) 샤드와 1개의 레플리카(Replica) 샤드 세트를 생성합니다. 레플리카 샤드는 프라이머리 샤드의 복제본입니다. (Failover)
인덱스의 이름은 모두 소문자여야 하며 추가, 수정, 삭제, 검색은 RESTful API로 수행할 수 있습니다.
샤드(Shard)
인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티션을 샤드라고 합니다.
타입(Type)
인덱스의 논리적 구조를 의미하며, 인덱스 속성에 따라 분류하기도 합니다. 6.0 버전 이하에서는 하나의 인덱스(music)에 여러 타입(Rock, K-pop, Classic)을 설정 가능했지만 6.1 버전부터는 인덱스당 하나의 타입만 사용할 수 있습니다.
문서(Document)
데이터가 저장되는 최소 단위입니다. 기본적으로 JSON 포맷으로 데이터가 저장됩니다. (데이터베이스 테이블의 행)
필드(Field)
문서를 구성하기 위한 속성입니다. 데이터베이스 컬럼(Column)이 정적인 데이터 타입인 데 반해 필드는 좀 더 동적인 데이터 타입이라고 할 수 있습니다.
매핑(Mapping)
문서의 필드와 필드의 속성을 정의하고 그에 따른 색인 방법을 정의하는 프로세스입니다. 데이터베이스의 스키마에 대응하는 개념으로 인덱스에 추가되는 각 데이터 타입을 구체적으로 정의하는 일입니다.
클러스터(Cluster)
물리적인 노드 인스턴스들의 모임이라고 할 수 있습니다. 클러스터는 모든 노드의 검색과 색인 작업을 관장하는 논리적인 개념이라고 할 수 있습니다.
노드(Node)
설정에 따라 각 노드는 한 가지 유형으로 동작할 수도 있고 여러 개의 유형을 겸해서 동작할 수 있습니다.
노드 설명 마스터 노드(Master Node) 클러스터를 관리한다.
노드 추가와 제거 같은 클러스터의 전반적인 관리를 담당한다.
(네트워크 속도가 빠르고 지연이 없는 노드를 마스터 노드로 선정해야 한다.)데이터 노드(Data Node) 실질적인 데이터를 저장한다.
샤드가 배치되는 노드이기도 하다.
검색과 통계 같은 데이터 관련 작업을 수행한다.코디네이팅 노드(Coordinating Node) 사용자의 요청만 받아서 처리한다.
클러스터 관련 요청은 마스터 노드에 전달하고 데이터 관련 요청은 데이터 노드에 전달한다.인제스트 노드(Ingest Node) 문서의 전처리 작업을 담당한다.
인덱스 생성 전 문서의 형식을 다양하게 변경할 수 있다.elasticsearch.yml
node.master: true/false # 마스터 노드
node.data: true/false # 데이터 노드
node.ingest: true/false # 인제스트 노드
search.remote.connect: true/false
(코디네이팅 노드는 모두 false)인덱스 관리 API(Indices API)
인덱스를 관리(인덱스 추가/삭제)하기 위한 API입니다. 인덱스를 생성할 때는 매핑이라는 세부 설정을 이용할 수 있는데 매핑은 문서와 문서에 포함된 필드, 필드 타입 등을 세세하게 지정하는 것이 가능한 설정 방식입니다.
문서 관리 API(Document API)
실제 문서를 색인하고 조회, 수정, 삭제를 지원하는 API입니다. 기본적으로 한 건의 문서를 처리하기 위한 기능을 제공하며 Single document API라고도 부릅니다. 다수의 문서를 처리해야 하는 경우에 대비해 Multi-document API도 제공합니다.
검색 API(Search API)
1) HTTP URI(Uniform Resource Identifier) 형태의 파라미터를 URI에 추가해 검색하는 방법
2) RESTful API 방식인 QueryDSL을 사용해 요청 본문(Request Body)에 질의 내용을 추가해 검색하는 방법
> 두 가지 형식을 섞어서 사용하는 것도 가능합니다.
{ size: # 몇 개의 결과를 반환할지 결정한다(기본값 10). from: # 어느 위치부터 반환할지를 결정한다. # 0부터 시작하면 상위 0~10건의 데이터를 반환한다(기본값은 0). _source: # 특정 필드만 결과로 반환하고 싶을 때 사용한다. sort: # 특정 필드를 기준으로 정렬한다. # asc, desc로 오름차순, 내림차순 정렬을 지정할 수도 있다. query: { # 검색될 조건을 정의한다. } filter: { # 검색 결과 중 특정한 값을 다시 보여준다. # 결과 내에서 재검색할 때 사용하는 기능 중 하나다. # 다만 필터를 사용하게 되면 자동으로 score값이 정렬되지 않는다. } }
집계 API(Aggregation API)
버킷 집계(Bucket Aggregation) 문서의 필드를 기준으로 버킷을 집계한다. 메트릭 집계(Metric Aggregation) Sum, Max, Min, Avg를 계산한다. 매트릭스 집계(Matrix Aggregation) 행렬의 값을 합하거나 곱한다. 파이프라인 집계(Pipeline Aggregation) 버킷에서 도출된 결과 문서를 다른 필드 값으로 재분류한다. 반응형'BackEnd > elasticsearch' 카테고리의 다른 글
06. 메타 필드(Meta Fields) (0) 2021.09.19 05. 매핑 API (0) 2021.09.19 03. 키바나 설치(kibana) (0) 2021.09.18 02. 엘라스틱서치 설치 (0) 2021.09.18 01. 엘라스틱서치(elasticsearch) (0) 2021.09.18