티스토리 뷰
엘라스틱 서치에 대해서 알아보겠습니다.
엘라스틱서치(Elasticsearch)
- 2012년 샤이 배논에 의해 개발된 아파치 루씬(Lucene)기반의 분산 검색 엔진
- 엘라스틱서치는 단독으로 사용되기 보다는 로그스태쉬(Logstash: 로그수집), 키바나(Kibana: 시각화. 모니터링)와 함께 ELK 스택으로 구성 됨
- 큰 데이터를 실시간으로 분석 가능
특징
- 스케일 아웃 지원
- 오류에 대비한 고가용성 구조 지원
- 샤드, 레플리카를 이용하여 데이터 분산 저장
- REST API를 지원. JSON 형태의 데이터 지원
주요 용어
일반 용어
RDB와 엘라스틱 서치의 용어는 아래처럼 바꿔서 이해할 수 있습니다.
- 테이블 = 인덱스
- 인덱스는 샤드 단위로 파티션
- 샤드는 복제를 가짐
- 로우 = 도큐먼트
- 칼럼 = 필드
- 스키마 = 매핑
클러스터
- 여러개의 노드로 구성된 논리적 단위
- 마스터노드 + 데이터노드로 구성
노드
- 마스터 노드
- 클러스터 관리. 각 노드 관리
- 인덱스와 샤드에 관한 관리
- 3개의 마스터 노드를 추천. 하나의 노드가 오류일 경우 2대의 노드로 복구
- 데이터 노드
- 데이터 보관
- 입력, 출력, 검색 수행
샤드, 레플리카
- 샤드(Shard)
- 데이터 파티셔닝 단위
- 하나의 인덱스를 샤드의 개수만 큼 나누어서 저장
- 레플리카(Replica)
- 샤드의 복제본
- 샤드, 레플리카의 개수는 인덱스별로 설정
- 기본값: 사드 5, 레플리카 1
- 노드별로 샤드가 나누어져 저장
- 샤드와 레플리카는 다른 노드에 저장되어 장비 오류시 복구에 이용
hits, aggregation
- REST API를 이용하여 검색한 도큐먼트의 결과는 hits
- 검색한 결과의 각 필드의 값들을 집계한 결과는 aggregation
- 검색 결과와 집계 결과를 함께 받을 수 있음
전문 검색(Full Text Search)
- 일반적인 RDB에서 인덱스는 특정 구간으로 나누어서 처리
- 일자, 시간, 기간 등
- B-Tree 인덱스
- 만약 게시판에서 "동해물과 백두산" 이라고 검색을 하면 데이터베이스의 내용 필드에서 like 검색등으로 찾아야함. 비용이 많이 듬
- 내용 필드의 문자를 분해하여 단어별로 인덱스를 생성하고, 검색할 때 이 인덱스를 이용하여 조회
역색인(inverted index) 구조
- 언어별로 인덱스를 구현
- "동해물과 백두산이 마르고 닳도록"이 입력되면
- "동해, 백두산, 마르다, 닳다"로 단어로 분산
- 각 단어가 등장한 문서, 위치를 기록
- 조회시 이 정보를 이용하여 처리
- 전문 검색을 가능하게 하기 위한 인덱스
- 엘라스틱 서치 자료 참고 [https://www.slideshare.net/kjmorc/ss-80803233]
- 대용량 검색 처리를 위한 역색인 설명
REST API 지원
- GET: Read, Select
- PUT: Update
- POST: Create, Insert
- DELETE: Delete
반응형
'빅데이터 > elasticsearch' 카테고리의 다른 글
[ES] ES 설치 중 cluster_uuid가 _na_로 나타날 때 (0) | 2021.06.29 |
---|
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- 알고리즘
- SQL
- Linux
- HIVE
- yarn
- Hadoop
- 다이나믹
- error
- 하둡
- 파이썬
- S3
- emr
- 정올
- nodejs
- AWS
- airflow
- 하이브
- SPARK
- bash
- ubuntu
- 백준
- oozie
- build
- Python
- HDFS
- hbase
- mysql
- Tez
- 오류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함