[ElasticSearch] 1장. 엘라스틱서치 Intro
ELK Stack 기초 다지기
**출처 : **ElasticSearch 공식 홈페이지
목차
- 엘라스틱서치 Intro
- 엘라스틱서치의 구성 요소
- 논리적 배치
- 물리적 배치
1. 엘라스틱서치 Intro
1. 엘라스틱서치 소개
1) 엘라스틱서치란?
- 검색 엔진이다.
- 오픈 소스 분산 시스템으로, 오픈 소스 검색 라이브러리인 아파치 루씬을 기반으로 만들어졌다.
- JSON 기반의 비정형 데이터 분산 검색 및 분석 지원
2) 엘라스틱서치의 장점
- 빠른 검색 제공 : 루씬은 모든 데이터를 역색인해 검색 속도가 빠르다.
- 역색인 : 각각의 단어가 어디에 속해있는지 목록을 유지하는 자료구조를 생성하는 것
- 색인은 디스크 공간을 차지하고, 새 데이터를 추가하는 것은 검색 속도를 느리게 만들수 있다.
- 튜닝으로 개선해야 한다.
- 관련 결과 보장 : 관련성 점수 (relevancy score)를 계산해 결과를 정렬한다.
- 관련성 점수 : 검색 조건과 각각의 문서가 얼마나 일치하는지를 점수를 매긴 것! (얼마나 관련성이 있는지)
- 기본적으로 TF-IDF 알고리즘을 사용한다.
- 단어 빈도 : 문서에서 찾고자 하는 단어가 많이 나올수록 높은 점수
- 역문서 빈도 : 단어가 다른 문서들에서 자주 등장하지 않을수록, 각 단어의 가중치가 높아짐
- 기본적으로 TF-IDF 알고리즘을 사용한다.
- 관련성 점수 : 검색 조건과 각각의 문서가 얼마나 일치하는지를 점수를 매긴 것! (얼마나 관련성이 있는지)
- 완전 일치를 뛰어넘은 검색 : 검색을 직관적으로 만들고, 완전 일치 수준을 넘어설 수 있음
- 사용자가 오타를 입력하거나 동의너, 저장된 파생어를 입력했을 때 유용!
- 분산과 확장성, 병렬 처리 : 설치와 서버 확장이 매우 편리하며, 분산 및 병렬 처리 기능을 제공한다.
- 보통 3개 이상으로, 클러스터로 묶어서 처리해 하나의 샤드가 깨져도 복제된 다른 곳으로 자동으로 이동
- 같은 클러스터 내부라면 초기설정 그대로도 노드끼리 연결이 된다
- 플러그인 형태 구현 : 다양한 기능을 플러그인 형태로 추가해 사용 수 있다.
- 필요한 기능에 대한 플러그인을 직접 만들어 붙일 수도 있음!
2. Solr와 ElasticSearch
-
일단 색인 및 검색에는 둘 다 Lucene을 사용한다고 함!
- Solr : 사이즈가 큰 데이터를 검색할 때 좋지만 색인 주기가 느리다.
- ElasticSearch : 사이즈가 작은 데이터에 대한 속성검색/연관검색/실시간 검색에 좋다.
Solr | ElasticSearch | |
---|---|---|
개발사 | Apache Software Foundation | Elastic.co |
색인 업데이트 방식 | 전체 데이터를 캐시로 추가 저장 | 변경 데이터만 캐시로 추가 저장 |
개발언어 | JSON, XML, URL Prameters | JSON |
연동 분석 모듈 | Banana, Zeppelin | Kibana |
주요 활용 영역 | 문서 원문 검색 | 상품 검색 / 로그 모니터링 |
검색 속도 | 느림 | 빠름 |
색인 속도 | 수 십분 | 초 단위 |
분석 속도 | 준실시간 | 실시간 |
장점 | 사이즈가 큰 장문 데이터 검색에 용이 | 실시간 색인 가능, 계층 구조 검색 가능 |
단점 | 색인 주기가 느리고 계층 구조의 검색이 불편 | 사이즈가 큰 장문 데이터 검색 시 속도 저하 |