# 엘라스틱 서치 ## 엘라스틱 서치 ### 엘라스틱 서치같은 검색 엔진을 사용하는 이유 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/