일래스틱서치
개요
'아파치 루신(Apache Lucene)' 기반의 검색 엔진으로 모든 종류의 문서를 검색하는데 사용할 수 있다. 실기간 검색 기능뿐만 아니라 강력한 집계 기능을 제공해 실시간 분석 엔진으로도 활용이 가능하다.
특징
데이터를 저장할 수 있어 NoSQL 저장소로도 활용할 수 있다. 웹 서버나 데이터베이스(DB) 서버에 응용 프로그래밍 인터페이스(API)를 지원한다.
기본 용어
- 인덱스/타입/문서(index/type/document) : 일래스틱서치의 데이터 계층이다.
MySQL로 치면 database/table/row에 대응하는 개념이다. REST API에서는 news/article/10000와 같이 표현한다.
사용 방법
일래스틱서치에서 데이터를 가져오는 방법은 다양하지만, 일래스틱 서치의 대시보드 어플리케이션인 '키바나(Kibana)'를 통해 가져오는 것이 가장 쉽고 편리하다.
- 키바나를 이용해 데이터를 가져오는 경우
- 키바나 쿼리를 이용해 원하는 데이터를 화면에 표시한다.
- 화면에 표시된 데이터가 실시간일 필요가 없는 경우 CSV로 데이터를 내보낸다.
- 실시간 데이터를 분석할 경우에는 현재 데이터를 볼 수 있는 쿼리(query DSL)를 생성해 직접 데이터를 요청하면 된다.
사용시 유의점
- 일래스틱서치를 검색 데이터에 활용하고 원본 데이터는 따로 보관한다.
- River 보다는 Logstash 사용을 권장한다.
- 원본 데이터를 Logstash에 바로 입력 가능한 JSON 형식으로 저장해서 AWS의 S3같은 곳에 압축해서 보관한다.
서버 구성 시 유의점
- 1개의 노드에 할당하는 메모리는 30GB를 넘지 않도록 한다.
- ES의 힙메모리 사이즈는 서버 전체 메모리의 50%가 넘지 않도록 한다.
- HD 보다는 SSD에서 성능이 월등히 향상된다.
참고 자료
- 네이버 지식백과 https://terms.naver.com/entry.nhn?docId=3586155&cid=59277&categoryId=59283
- 위키백과 https://ko.wikipedia.org/wiki/%EC%9D%BC%EB%9E%98%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98
- Jongmin Kim(김종민) 블로그 http://kimjmin.net/2015/04/using-es/
- 박연오 블로그 https://bakyeono.net/post/2016-06-03-start-elasticsearch.html