# 방법 1.
# 필요 명령어 다운로드
which wget # wget 명령어가 있는지 확인
apt-get install wget
apt-get install gnupg
# GPG 키 추가 (인증키 서명되어 있어서)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt-get install -y apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
apt-get update # 설치된 프로그램 업데이트
apt-get install elasticsearch # 설치
apt-get install kibana
# (옵션) 서비스 등록 해두기
apt install -y systemctl
systemctl enable elasticsearch.service
# 방법 2.
# elastic_search 5.1.1 버전 설치
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.deb.sha1
apt-get install -y libdigest-sha-perl
shasum -a 511 -c elasticsearch-5.1.1.deb.sha1 # 5.1.1 버전이므로 511
dpkg -i elasticsearch-5.1.1.deb # ERROR : 커널 사용불가해서
# 참고: https://forum.proxmox.com/threads/couldnt-write-4-4-1-7-to-kernel-printk.50872/
# 안됬다고 한다^^
Step 3. 설치 확인 및 실행
설치가 모두 끝났으면, ElasticSearch를 시작하고 & 끄고 & 활성화되었는지 확인할 수 있다.
단, 시작 명령을 주고, 로딩시간으로 인해 몇 분 뒤에 확인할 수 있다.
service elasticsearch start # 엘라스틱 서치 시작
apt-get install -y curl
curl -XGET 'localhost:9200' # 활성화 확인
service elasticsearch stop # 엘라스틱 서치 종료
# 데이터 삽입
curl -XPOST 'localhost:9200/_bulk' \
--data-binary @simple_basketball.json
# 검색 (모든 문서 출력)
curl -XGET localhost:9200/basketball/record/_search?pretty
# 방법 1. search옵션 중 URI 이용
# points 속성이 30인 것만 출력
curl -XGET localhost:9200/basketball/record/_search?q=points:30&pretty
# 방법 2. search옵션 중 Request body 이용
# -d : direct하게
curl -XGET localhost:9200/basketball/record/_search -d '
{
"query": {
"term": {"points" : 30}
}
}'
# Aggregation
ElasticSearch 내의 문서 간의 조합을 통해 어떠한 값을 도출해내기 위해 사용.
Metric aggregation
산술할 때 사용 (ex. 평균, 최대값, 최소값)
# 데이터 삽입
# --data-binary : 파일에서 데이터를 뽑아낸다
curl -XPOST 'localhost:9200/_bulk' \
--data-binary @simple_basketball.json
# Aggregation 파일내용 확인
nano avg_points_aggs.json
# Aggregation 수행
curl -XGET localhost:9200/_search?pretty \
--data-binary @avg_points_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @max_points_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @min_points_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @sum_points_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @stats_points_aggs.json # 평균,최대 등 한번에
Aggregation 파일내용의 의미
"size":0 은 보고싶은 값만 확인하고 싶어서 설정
"aggs"는 "aggregations"라고 해도 무방
“terms”는 팀별로 묶기 (groupBy)
"avg_score"= aggregation 이름
"avg"= 평균값을 구하겠다
“max”= 최대값을 구하겠다
"field":"points"= 필드값중에서 포인트를 사용해라
Bucket Aggregation
SQL의 group_by와 같음. 팀별로 그룹지어주는 것.
# Index 생성
curl -XPUT localhost:9200/basketball
# Mapping 추가
nano basketball_mapping.json # 매핑파일 확인
curl -XPUT 'localhost:9200/basketball/record/_mapping' \
-d @basketball_mapping.json
# 문서 삽입
nano twoteam_basketball.json # 문서내용 확인
curl -XPOST 'localhost:9200/_bulk' \
--data-binary @twoteam_basketball.json
# term aggs (group by team)
nano terms_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @terms_aggs.json
Kibana
# Index 생성
curl -XPUT localhost:9200/basketball
# Mapping 추가
nano basketball_mapping.json # 매핑파일 확인
curl -XPUT 'localhost:9200/basketball/record/_mapping' \
-d @basketball_mapping.json
# 문서 삽입
nano twoteam_basketball.json # 문서내용 확인
curl -XPOST 'localhost:9200/_bulk' \
--data-binary @twoteam_basketball.json
# term aggs (group by team)
nano terms_aggs.json
curl -XGET localhost:9200/_search?pretty \
--data-binary @terms_aggs.json
Logstash
ELK 스택에서 input을 담당.
많은 종류의 data type을 흡수하여 원하는 형태로 변환 가능. 이를 ElasticSearch에 입력.