반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- effectivejava
- 스프링
- 예제로 배우는 스프링 입문
- 스프링핵심원리
- k8s
- 알고리즘정렬
- 클린아키텍처
- 김영한
- Effective Java 3
- 코딩테스트
- 스프링부트
- 엘라스틱서치
- 카카오 면접
- Effective Java
- Sort
- 카카오
- 이펙티브 자바
- java
- 이펙티브자바
- 오블완
- 자바
- Spring
- JavaScript
- 스프링 핵심원리
- kubernetes
- 알고리즘
- 티스토리챌린지
- ElasticSearch
- 이차전지관련주
- 자바스크립트
Archives
- Today
- Total
Kim-Baek 개발자 이야기
[Elasticsearch] 기본 개념, Concept, 용어 본문
elasticsearch
Elasticsearch
는 높은 확장성을 가지고 full-text 검색과 분석 엔진을 가진 오픈소스이다.- 대용량의 데이터도 거의 실시간으로 저장하고 검색하고 분석할 수 있다.
Elasticsearch
는 오픈소스 분산 시스템이며 아파치 루씬(오픈소스 검색 라이브러리)을 기반으로 만들어졌다.
Elasticsearch 의 다양한 기능
빠른 검색 제공
- 각각 단어가 어디에 속해있는지 목록을 유지하는 자료구조를 생성하여. 루씬 기반의 reverse indexing 을 사용한다.
로그 수집 및 데이터 분석
- Elasticsearch, Logstash, Kibana 스택을 이용하여 로그를 수집하고 분석할 수 있다.
관련성 보장
- 기본적으로 tf-idf 알고리즘을 사용하여 검색어에 대한 관련성 점수를 계산하여 관련성이 높은 검색 결과를 제공해준다.
완전 일치를 넘어서는
- 오타나 파생어와 같은 검색도 지원해준다.
Elasticsearch의 특징
- Rest API 를 통해 기능을 제공하고 JSON을 사용해 다양한 API를 조절할 수 있다.
- Aggregation 과 같은 기능을 제공해 다양한 분석이 가능하다.
- 실시간 검색과 분석 능력을 가진 Document 기반의 NoSQL 데이터 저장소로 볼 수 있다.
- 자동으로 데이터를 샤드에 나누고 클러스터의 이용 가능한 서버간에 균형을 유지하며 확장성이 있다.
elasticsearch 기본 용어
Near Realtime (NRT)
Elasticsearch
는 거의 real time 검색 플랫폼이다.
Cluster
Cluster
는 하나 또는 그 이상의 노드들(서버들)의 모임이다.- 하나의 클러스터에 여러개의 노드를 가질 수 있다.
- 전체 데이터를 indexing 하고 모든 노드들 사이에서 검색을 제공한다.
Node
Node
는 Cluster의 부분이 되는 하나의 서버이다.- 현재 노드가 하나도 없다면 elasticsearch 라는 디폴드 노드가 실행될 것이다.
- 클러스터 이름을 지정하여 노드를 특정 클러스터에 속하게 할 수 있다.
Index
index
는 비슷한 성격을 가진 document의 집합이다.- 데이터베이스와 같이 독립적인 문서 덩어리이다.
Type
Type
은 index에서 논리적인 카테고리이다.- 하나의 index에 하나 이상의
type
들을 정의할 수 있다. - Mapping을 이용해 각
Type
에 들어갈 필드를 정의해 줄 수 있다.
Document
Document
는 인덱스되는 기본적인 단위이다.- JSON 형식으로 이루어져있다.
- 유연한 구조로 미리 정의한 스키마에 의존받지 않는다.
- 독립적으로 필드와 값을 가진다.
Shards & Replicas
- 큰 크기의 index를
Shard
라고 불리는 여러개의 조각으로 나눌 수 있다. - index를 만들때 shard의 갯수를 정의해줄 수 있다.
- 하나의 샤드는 하나의 루씬 색인이다. 루씬 색인은 역 색인을 포함하는 파일들의 모음이다.
역 색인은 엘라스틱서치가 전체 문서를 찾아보지 않고도 하나의 Term을 포함하는 문서를 찾도록 해준다.
샤드가 중요한 이유
- 수평적으로 나누고 크기를 늘릴 수 있따.
- 샤드들 사이의 수평적인 분산과 연산을 통해서 퍼포먼스와 효율을 늘릴수 있다.
Replication이 중요한 이유
- 샤드/노드의 fails시 높은 가용성을 제공한다. shard의 복제본으로 shard와 다른 node에 위치한다.
- 모든 replicas들이 평행하게 실행되므로 효율적으로 확장이 가능하다(검색과 성능).
- 각각의 index는 여러개의 샤드들로 나뉘어진다.
- 한번 index가 복제되면 원래 shard는 primary shard가 되고 복제된 샤드는 replica shard가 된다.
- index는 여러개의 복제품을 가질 수 있다.
기본적으로 각각의 index는 5개의 primary shard와 1개의 복제품을 가진다.
즉, 5개의 primary shard와 5개의 replica shard를 가져 총 10개의 shard를 가진다.
반응형
'개발 > Elasticsearch' 카테고리의 다른 글
Elastic Search 란? 장단점 (0) | 2024.11.11 |
---|---|
[Elasticsearch] Aggregation (0) | 2020.08.12 |
[Elasticsearch] Mapping API (0) | 2020.08.11 |
[Elasticsearch] Index API (0) | 2020.08.10 |
Comments