Elasticsearch 정리
Elasticsearch
개념
-
분산형 오픈소스 검색/분석 엔진
-
동작 원리
-
기능
-
데이터 수집 / 집계
-
구문 분석, 정규화
-
-
데이터 검색
-
역색인(reverted index)을 사용하여 빠른 검색 속도
-
키워드가 어떤 docs에 있는지 저장
-
-
-
특징
-
확장성
-
샤드를 이용한 수평적 규모 확장
-
-
고가용성
-
replica가 데이터의 안정성을 보장
-
-
Schema free
-
스키마 대신 json 문서 구조로 된 데이터 사용
-
-
RESTful
-
HTTP의 RESTful API를 통해 데이터 CRUD 작업
-
-
Multi-tenancy
-
서로 다른 인덱스에서 필드명이 같을 경우 한 번에 조회 가능
-
-
불변성
-
수정이 불가하여 Update시, 데이터를 삭제했다가 다시 생성
-
다중 스레드 환경에서 동시성 문제 회피 (수정이 불가하므로 lock 필요 x)
-
높은 시스템 캐시 활용도 (수정할 경우 시스템 캐시 삭제 및 재생성 필요하기 때문)
-
-
구조
-
physical
-
cluster -> Node -> Indice -> Shard
-
-
logical
-
Index -> Type -> Document -> field : value
-
-
cluster
-
노드의 집합
-
클러스터 내 포함된 노드로 통합 인덱싱 및 검색 기능 제공
-
-
Node
-
클러스터에 포함되어 샤드를 분배받은 단일 서버
-
런타임 상태의 ES 프로세스
-
종류
-
master
-
클러스터 제어
-
인덱스 생성/삭제
-
해당 클러스터 내 노드 모니터링
-
데이터 입력 시 어느 샤드에 할당할 것인지(라우팅)
-
-
Data
-
데이터 보유, CRUD 작업, 검색, 집계
-
많은 CPU/메모리 자원 소모 -> 모니터링 필요
-
-
Ingest
-
색인 전 데이터 전처리 작업
-
데이터 포맷 변경 파이프라인 구성 및 실행
-
-
Coordinating
-
사용자의 요청을 RR방식으로 분산 (Load balance)
-
-
Tribe
-
여러 클러스터에 접근하여 동시 검색 제공
-
deprecated 된 상태
-
-
-
-
index
-
RDBMS의 데이터베이스와 같은 역할
-
document 집합
-
-
Shard
-
인덱스의 데이터 조각 단위
-
인덱스의 데이터를 분산하여 노드의 디스크에 효율적으로 저장될 수 있도록 함
-
종류
-
Primary Shard
-
실질적인 CRUD를 제공
-
-
Replica Shard
-
노드 손실을 대비한 프라이머리 샤드의 복제본 (장애 복구)
-
검색 성능 향상 (읽기 분산에 활용)
-
-
-
-
document
-
인덱스의 기본 데이터 정보 단위
-
json 형식으로 표현
-
-
type
-
7.0버전부터 사용 x / 인덱스 하나 당 타입을 하나씩 가짐
-
-
field
-
문서에 들어가는 데이터의 타입 정의
-
하나의 필드가 여러 개의 데이터 타입 가질 수 o
-
Elasticsearch 명령어
-d 옵션
-
추가할 데이터를 json 포맷으로 전달
-
파일로 데이터 전달 시 @{파일 경로}.json
-H 옵션
-
헤더 명시
?pretty
-
깔끔한 형식으로 결과 반환
데이터 조회
-
curl -XGET {인스턴스}/{인덱스}?pretty
데이터 생성
-
curl -XPOST {인스턴스}/{인덱스}/{type명}/{id} -d '{삽입 내용}'
데이터 수정
-
curl -XPOST {인스턴스}/{인덱스}/{type}/{document_id}/_update?preety -d '{변경 내용}'
벌크(Bulk)
-
여러 개의 document 를 한번에 삽입
-
curl -XPOST {인스턴스}/_bulk?pretty --data-binary @{삽입할 json 파일 경로}
매핑(Mapping)
-
RDBMS의 스키마와 동일한 개념
-
데이터 타입형 지정
-
curl -XPUT {인스턴스}/{인덱스}/_mapping -d {매핑 내용}
집계 (Aggregation)
-
데이터 내부 트렌드 및 패턴 파악
-
Metric
-
document 내 값에 대해 산술 조합 (MAX, MIN, SUM 등)
-
-
Bucket
-
Group by 의 개념
-
검색 시 필드 기준으로 doc의 데이터 집계
-
-
Matrix
-
행렬 값에 대해 합, 곱 계산
-
-
Pipeline
-
생성된 집계 결과를 다시 집계할 경우 사용
-
검색
-
URI 검색
-
_search?q={필드}:{조회값}
-
조건문
-
field:val1 OR val2
-
field1:val1 AND field2:val2
-
field:(>10 AND <=20)
-
-
-
쿼리 DSL 검색
-
Abstract Syntax Tree 형태의 쿼리
-
조건 중첩 가능
-
_search? -d '{"query":{조회값}}'
-
옵션
-
size : 반환할 결과 개수
-
from : n번째 결과부터 반환
-
sort : 지정 필드 기준 정렬
-
_source : 특정 필드 반환
-
query : 검색 조건 입력
-
match_all / match_none
-
match
-
bool
-
terms
-
term
-
regexp
-
filter : 검색 결과 내에서 재검색 조건 설정
-
aggs
-
-
-
'Elastic Stack > ElasticSearch' 카테고리의 다른 글
Elasticsearch - 4.한글 형태소분석기(Nori Analyzer) (0) | 2021.04.19 |
---|---|
Elasticsearch - 3.부가적인 검색 API (0) | 2021.04.19 |
Elasticsearch - 2.검색 API(Elasticsearch Query DSL) (0) | 2021.04.19 |
ELK - Filebeat 란? (실시간 로그 수집) (0) | 2021.04.19 |
Solr7.4 Tagger Handler (NER,Named-Entity Recognition) (0) | 2021.04.19 |
Solr&Zookeeper(솔라&주키퍼) cloud 환경 구성 (0) | 2021.04.19 |
Elasticsearch 로컬(1개의 클러스터)에서 n개 이상 노드띄우기 (0) | 2021.04.19 |
엘라스틱서치(elasticsearch) 5.4 설치 (0) | 2021.03.24 |