일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tcp
- Python
- erc721
- MySQL
- server
- Ethereum
- git
- 트랜잭션
- solidity
- blockchain
- 블록체인
- Docker
- truffle
- 솔리디티
- 스마트 컨트랙트
- Programming
- 제어의역전
- ERC20
- ERC165
- web
- 네트워크
- web3
- web3.js
- geth
- ethers
- 이더리움
- JavaScript
- NFT
- erc
- github
- Today
- Total
멍개의 연구소
[elasticsearch] elasticsearch란? 설치 방법 본문
elasticsearch는 분산 검색엔진입니다. 분산 시스템이기 때문에 검색 대상 용량이 증가했을 때 대처하기가 매우 쉽다.
elasticsearch에 대해서 알아보기 전에 elasticsearch가 나온지 꽤 된 저장소이다. 과연 얼마나 최근에 업데이트가 되었는지 github에서 살펴보았는데 최근 커밋 내역이 2분전이다... ㅋㅋㅋㅋ(죄송합니다.)
해당 포스트에서는 0.20 버전을 사용하지만 현재 5.x버전까지 나왔습니다
관계형 데이터베이스 VS elasticsearch 비교
관계형 데이터베이스 | elasticsearch |
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everything is indexed |
SQL | Query DSL |
index라는 개념이 관계형에서의 개념이 잡혀있어서 문서에서 index라고 나올 때마다 Database로 딱 안 떠오른다 ㅋㅋ
elasticsearch의 특징은 다음과 같다.
JSON 기반의 스키마 없는 저장소
elasticsearch는 검색엔진이지만 NoSQL처럼 사용가능
Multi-tenancy
하나의 서버안에 여러 인덱스 저장가능. 여러 인덱스의 데이터를 하나의 쿼리로 검색 가능
확장성과 유연성
플러그인을 이용해 기능확장이 용이함. BigDesk, Head를 설치하면 elasticsearch 모니터링 기능을 사용할 수 있게 된다.(직접 사용해보니 플러그인을 설치하는 것이 상당히 쉬움)
분산 저장소
노드 추가의 용이함.
키에 따라 여러 샤드가 구성되는 방식으로 데이터를 분산.
인덱스는 각 샤드마다 구성, 각 샤드는 0개 이상의 복제본을 가진다.
클러스터가 가동될 때 여러 노드 중 하나의 메타데이터 관리를 위한 마스터 노드로 선출.
elasticsearch 설치하기
다운로드
서버실행
elasticsearch의 기본 포트는 9200입니다.
플러그인 설치하기
bin/plugin을 이용하여 쉽게 플러그인을 설치할 수 있다.
첫 번째와 두 번째 줄에서 보이는 head와 bigdesk 플러그인은 모니터링을 위한 필수 플러그인이다.
설치 후 http://localhost:9200/_plugin/head/ 와 http://localhost:9200/_plugin/bigdesk/로 접속하면 웹 브라우저를 이용해 상태를 확인해 볼 수 있다.
설정변경
간단한 테스트에는 설정 변경이 필요 없으나, 성능 테스트, 실서비스에 적용할 때에는 몇가지 변경이 필요하다고 한다.
설정파일은 config/elasticsearch.yml에 작성되어 있다.
기본적으로 설정파일은 전부 주석 처리가 걸려있다.
해당 설정값을 위 설정값과 하나하나 비교를 해보았는데
node.master: true이 부분이랑 클러스터이름, 노드 이름, discovery.zen.ping.timeout: 10s 부분빼고는 나머지는 전부 똑같다.
node.master:true값에 따라사 기존의 마스터 노드가 죽었을 때 마스터 노드가 될 수 있는 자격에 대한 설정인 것 같다.
아마 elasticsearch를 설치하고 디렉토리를 보면 전체적으로 한눈에 들어올 것이다. 매우 직관적으로 잘 만들어졌다.
개인적으로 접근성은 괜찮은 것 같다.
다음번 포스팅에서는 REST API와 python을 이용하여 elasticsearch를 사용하는 방법에 대해서 알아보도록 하겠습니다.
'서버 > 데이터베이스' 카테고리의 다른 글
[mysql] mysqldump를 이용하여 데이터 백업, 복원하기 (0) | 2017.05.04 |
---|---|
[mysql] 디비 접속제한, 유저 접속 제한을 통해 원격에서 접속을 해보자 (0) | 2017.05.03 |
RDBMS vs NoSQL vs InMemory (0) | 2017.04.28 |