"일래스틱서치"의 두 판 사이의 차이
(→기본 용어) |
|||
12번째 줄: | 12번째 줄: | ||
*'''샤드/복사본'''(shard/replica) : 일래스틱서치는 색인 데이터를 하나의 물리적 데이터 공간에만 저장하는게 아니라, 여러 개의 저장공간에 나누거나 복사할 수 있다. 여기서 '''shard'''가 성능향상을 위해 데이터를 여러 물리적 공간에 나눠 저장하는 것이고, '''replica'''는 한 노드가 실패했을 때에도 검색서비스 제공이 가능하도록 데이터를 여러 물리적 공간 또는 노드에 복제해 두는 것이다. | *'''샤드/복사본'''(shard/replica) : 일래스틱서치는 색인 데이터를 하나의 물리적 데이터 공간에만 저장하는게 아니라, 여러 개의 저장공간에 나누거나 복사할 수 있다. 여기서 '''shard'''가 성능향상을 위해 데이터를 여러 물리적 공간에 나눠 저장하는 것이고, '''replica'''는 한 노드가 실패했을 때에도 검색서비스 제공이 가능하도록 데이터를 여러 물리적 공간 또는 노드에 복제해 두는 것이다. | ||
*'''QueryDSL''' : JSON으로 표현되는 일래스틱서치의 검색 문법이다. | *'''QueryDSL''' : JSON으로 표현되는 일래스틱서치의 검색 문법이다. | ||
− | + | == 설치 및 실행 == | |
+ | *자바 설치 | ||
+ | *일래스틱서치 설치 | ||
+ | *한글 형태소 분석기 설치 | ||
+ | 일래스틱 서치는 한국어를 위한 분석기를 내장하고 있지 않다. 띄어쓰기만으로 단어를 분리할 경우 검색 품질이 매우 떨어지기 때문에 한국어 전용 분석기를 사용해야 한다. 일래스틱서치용으로 공개된 한글 형태소 분석기로는 <ref>{[https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY 은전한닢(MeCab-ko analyser), 설치 방법이 까다로운 편이였지만 플러그인이 개선되어 설치가 매우 간편해졌다.>}<ref/> | ||
+ | *인덱스, 타입 준비(스키마 설정) | ||
+ | *인덱스 설정 | ||
+ | *인덱스 생성 | ||
+ | *문서 색인(삽입) 요청 보내기 | ||
+ | *검색 요청 보내기 | ||
== 사용 방법 == | == 사용 방법 == | ||
일래스틱서치에서 데이터를 가져오는 방법은 다양하지만, 일래스틱 서치의 대시보드 어플리케이션인 '키바나(Kibana)'를 통해 가져오는 것이 가장 쉽고 편리하다. | 일래스틱서치에서 데이터를 가져오는 방법은 다양하지만, 일래스틱 서치의 대시보드 어플리케이션인 '키바나(Kibana)'를 통해 가져오는 것이 가장 쉽고 편리하다. |
2019년 6월 25일 (화) 17:23 판
개요
'아파치 루신(Apache Lucene)' 기반의 검색 엔진으로 모든 종류의 문서를 검색하는데 사용할 수 있다. 실기간 검색 기능뿐만 아니라 강력한 집계 기능을 제공해 실시간 분석 엔진으로도 활용이 가능하다.
특징
데이터를 저장할 수 있어 NoSQL 저장소로도 활용할 수 있다. 웹 서버나 데이터베이스(DB) 서버에 응용 프로그래밍 인터페이스(API)를 지원한다.
기본 용어
- 인덱스/타입/문서(index/type/document) : 일래스틱서치의 데이터 계층이다.
- 필드(field) : 일래스틱서치에서 문서는 JSON인데, JSON의 각 프로퍼티를 일래스틱서치에서 필드라 부른다.
- 매핑(mapping) : 인덱스/타입/문서의 규칙을 정의한 것이다.
- 색인(index) : 일래스틱서치가 문서를 검색할 수 있도록 색인 데이터를 만들어두는 과정이다.
- 색인(index) : 위 index의 명사형으로, 색인 작업을 거쳐 만들어진 색인 데이터를 의미한다.
- 클러스터/노드(cluster/node) : 여러 대의 서버를 묶어서 구동하기 위해 사용되는 개념이다. 각 서버가 노드, 서버의 묶음이 클러스터이다.
- 샤드/복사본(shard/replica) : 일래스틱서치는 색인 데이터를 하나의 물리적 데이터 공간에만 저장하는게 아니라, 여러 개의 저장공간에 나누거나 복사할 수 있다. 여기서 shard가 성능향상을 위해 데이터를 여러 물리적 공간에 나눠 저장하는 것이고, replica는 한 노드가 실패했을 때에도 검색서비스 제공이 가능하도록 데이터를 여러 물리적 공간 또는 노드에 복제해 두는 것이다.
- QueryDSL : JSON으로 표현되는 일래스틱서치의 검색 문법이다.
설치 및 실행
- 자바 설치
- 일래스틱서치 설치
- 한글 형태소 분석기 설치
일래스틱 서치는 한국어를 위한 분석기를 내장하고 있지 않다. 띄어쓰기만으로 단어를 분리할 경우 검색 품질이 매우 떨어지기 때문에 한국어 전용 분석기를 사용해야 한다. 일래스틱서치용으로 공개된 한글 형태소 분석기로는 <ref>{[https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY 은전한닢(MeCab-ko analyser), 설치 방법이 까다로운 편이였지만 플러그인이 개선되어 설치가 매우 간편해졌다.>}인용 오류: 열린 <ref>
태그가 잘못 만들어졌거나 이름이 잘못되었습니다
- 인덱스, 타입 준비(스키마 설정)
- 인덱스 설정
- 인덱스 생성
- 문서 색인(삽입) 요청 보내기
- 검색 요청 보내기
사용 방법
일래스틱서치에서 데이터를 가져오는 방법은 다양하지만, 일래스틱 서치의 대시보드 어플리케이션인 '키바나(Kibana)'를 통해 가져오는 것이 가장 쉽고 편리하다.
- 키바나를 이용해 데이터를 가져오는 경우
- 키바나 쿼리를 이용해 원하는 데이터를 화면에 표시한다.
- 화면에 표시된 데이터가 실시간일 필요가 없는 경우 CSV로 데이터를 내보낸다.
- 실시간 데이터를 분석할 경우에는 현재 데이터를 볼 수 있는 쿼리(query DSL)를 생성해 직접 데이터를 요청하면 된다.
사용시 유의점
- 일래스틱서치를 검색 데이터에 활용하고 원본 데이터는 따로 보관한다.
- River 보다는 Logstash 사용을 권장한다.
- 원본 데이터를 Logstash에 바로 입력 가능한 JSON 형식으로 저장해서 AWS의 S3같은 곳에 압축해서 보관한다.
서버 구성 시 유의점
- 1개의 노드에 할당하는 메모리는 30GB를 넘지 않도록 한다.
- ES의 힙메모리 사이즈는 서버 전체 메모리의 50%가 넘지 않도록 한다.
- HD 보다는 SSD에서 성능이 월등히 향상된다.
참고 자료
- <일래스틱서치>, <<네이버 지식백과>>, 2016-1220
- <일래스틱서치>, <<위키백과>>, 2019-05-12
- <엘라스틱서치 사용법>, <<김종민 블로그>>, 2015-04-24
- <엘라스틱서치 기초 사용법>, <<박연오 블로그>>, 2016-06-03