# 엘라스틱 서치
## 엘라스틱 서치
### 엘라스틱 서치같은 검색 엔진을 사용하는 이유
1. 관계형 데이터 베이스는 단순 텍스트 매칭에 대한 검색만을 제공
- MySQL 최신버전에서 n-gram 기반의 Full-text 검색을 지원하지만, 한글 검색의 경우 아직 빈약
2. 텍스트를 여러 단어로 변형하거나 텍스트의 특질을 이용한 동의어나 유의어 활용한 검색이 가능
3. 비 정형 데이터의 색인과 검색이 가능
- 빅데이터 처리에서 매우 종요하게 생각되는 부분
4. 형태소 분석을 통한 자연어 처리가 가능
5. 역 색인 지원으로 빠른 검색 가능
### 엘라스틱 서치의 장점
- 데이터 베이스 대용으로 사용가능
- 대량의 비정형 데이터 보관 및 검색 가능
- 오픈소스 검색 엔진
- 전문 검색
- 통계 분석
- 스키마 리스
- RESTful API
- 멀티 테넌시
- 서로 다른 인덱스에서도 검색할 필드명만 같으면 여러 개 의 인덱스를 한번에 조회할 수 있다.
- 문서 기반
- 역색인
- 확장성과 가용성
### 엘라스틱 서치의 단점
- 실시간 처리는 불가능 하다
- 색인의 특징 덕분에 색인된 데이터는 1초 뒤에나 가능하다. 색인된 데이터가 내부적으로 커밋과 플러시 같은과정을 거치기 때문.
- 트랜잭션 롤백의 기능을 제공하지 않는다
- 분산시스템의 특성 때문에, 시스템적 비용 소모가 큰 롤백, 트랜젝션을 지원하지 않아 데이터 관리에 유의해야 한다
- 진정한의미의 업데이트를 지원하지 않는다
- 업데이트 기능은 실제 데이터를 삭제했다가 다시만드는 과정으로 업데이트, 불변성이라는 이점을 제공하기도 한다.
- 조인을 할 수 없어, 2번의 별개의 수행을 해야한다.
- 데이터 수정시 성능이 크게 떨어진다. 자주 정보를 업데이트 해야할 때 엘라스틱 서치는 적절한 기술이 아니다.
### 속도적 이점이 있는 이유
- 인덱싱 작업을 통해 속도를 향상 시킴
- 검색어가 될 수 있는 문자열을 유연하게 토큰화 하고 인덱싱하는데 특화
### 앞으로 공부할 것
- express에서 replicaset 사용법
- elasticsearch 쿼리 문법
- docker에 대한 공부
### 관련 자료
[도커로 elasticsearch, mongodb, monstache 설정 자료](https://sudarlife.tistory.com/entry/MongoDB-ElasticSearch-Monstache-%EB%8F%84%EC%BB%A4-%EA%B8%B0%EB%B3%B8-%EC%85%8B%ED%8C%85%EC%9D%84-%ED%95%B4%EB%B3%B4%EC%9E%90)
[monstache 공식 문서](https://rwynn.github.io/monstache-site/)
###### tags: `tech sharing`
http://kimjmin.net/2019/08/2019-08-how-to-analyze-korean/