1.1 ElasticSearch란
- 루씬(Lucene) 기반의 오픈소스 검색엔진
- JSON기반 문서 저장/검색/분석
ElasticSearch 특징
-
준실시간 검색엔진 : 색인 → 검색 속도가 빠름
- 샤드(shard) : 데이터 공간
- refresh_interval : 데이터 공간 저장후, 설정된 시간 이후에 검색이 가능 (ex. 1초)
-
클러스터 구성 : 한 대 이상의 노드를 클러스터로 구성 → 높은 수준의 안정성 + 부하분산
- 클러스터 : 여러 컴퓨터 및 구성요소를 하나처럼 사용하는 기술
- 노드 하나가 망가져도 클러스터유지 → 서비스 안정성
- 노드는 *메시형태로 요청을 주고받음 → 부하분산
*메시형태 : 노드간 서로 직접 통신
cf. RDBMS의경우 마스터 서버에서만 명령 처리 가능
-
스키마리스 : 동적으로 스키마 생성
-
RestAPI
- 어떤 언어로도 클라이언트 생성가능. (ex. curl)
1.2 RPM or DEB으로 ElasticSearch 설치하기
*RPM : 리눅스에서 제공하는 레드햇 기반 패키지 설치 매니저 (CentOs7이상지원)
*DEB : 데비안 계열의 리눅스 배포판 패키지 관리 시스템 (우분투)
- 간단한 명령어로 설치
- 실행/중지 스크립트 제공
- 정의된 위치에 파일이 들어감
- 자바 설치되어 있어야함
1.4 tar 파일로 설치하기
- 서로다른 버전의 ElasticSearch 운영시
- 한 노드에 2개 이상의 ElasticSearch 프로세스
위와 같은 환경에서 유리. 서로 다른 버전을 다른 위치에 설치가능.
-
설치파일 다운로드
-
압축해제
$ tar xvfz ./파일명
디렉토리
- bin : 실행을 위한 바이너리 파일
- config : 환경설정 파일
- lib : 실행을 위한 외부 라이브러리. 확장자가 jar. ElasticSearch의 기본인 루씬라이브러리 포함
- logs : 디폴드 로그 저장 디렉터리. config/elasticsearch.yml파일으로 변경가능.
- modules : 구성 모듈(=기능이 구현된것). 노드간 통신을 구현한 transport 모듈 등.
- plugins : 설치한 플러그인을 구성하는 파일.
-
실행
$ cd bin
$ ./elasticsearch
종료 : ctrl + c
⇒ 프로세스를 *포어그라운드 형태로 실행한것. → 터미널 입력 불가
- 프로세스의 실행 형태 : 포어그라운드(직접실행) or 백그라운드(데몬 형태로 동작)
데몬 형태로 실행
$ ./elasticsearch -d
-
동작 확인
$ curl -s http://localhost:9200
두개의 ElasticSearch 띄우기
-
각 디렉터리명을 다르게 압축을 푼다.
-
config/elasticsearch.yml 수정 → http.port: 9201 으로 변경
-
각각 서비스 실행