ELK stack
ELK 구성 예시

ElasticSearch 설치

    • ELK는 JVM위에서 구동
    • 설치환경에 JDK가 설치되어 있어야 한다.
      • apt-get install openjdk-11-jre
      • apt-get install openjdk-11-jdk

Java 환경번수 설정(블록된 내용을 /etc/profile 파일에 추가한다.

  • wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-amd64.deb
  • dpkg -i elasticsearch-7.10.1-amd64.deb
  • Elasticsearch 실행
  • # systemctl enable elasticsearch.service (서비스활성화- 부팅시 자동 구동)
  • # service elasticsearch start

systemctl enable name.service

service --status-all grep elasticsearch
curl -XGET localhost:9200
elasticsearch와 RDB와의 저장방식 비교
elasticsearch와 RDB 용어비교
elasticsearch(REST API)와 RDB 명령어

PUT vs POST(idempotent)

idempotent = 실행을 여러번 반복해도 같은 결과를 보장받을 수 있는 특성을 말함.

  • PUT(idempotent O)
    • 리소스의 생성과 수정
    • 요청시마다 같은 리소스를 반환
    • PUT /<index>/<type>/<id>
  • POST(idempotent X)
    • 리소스 생성 역할
    • 요청시마다 새로운 리소스 생성
    • POST /<index>/<type>

 

elasticsearch(REST API)와 RDB 명령어 비교
elasticsearch 검색

  • curl -XGET http://localhost:9200/classes?pretty

index(Database) 생성

  • curl -XPUT http://localhost:9200/classes

index(Database) 삭제

  • curl -XDELETE http://localhost:9200/classes

Data 삽입

  • curl -XPOST http://localhost:9200/classes/class/2?pretty -H'Content-Type: application/json' -d' {"title":"Algorithm","Professor":"John"}'

Json파일 삽입

  • curl -XPOST http://localhost:9200/classes/class/4?pretty -H'Content-Type: application/json' -d @./test.json

column 추가

  • curl -XPOST http://localhost:9200/classes/class/3?pretty -update -H'Content-Type: application/json' -d' {"doc": {"Unit" : 1}}'

Bulk post

  • curl -XPOST http://localhost:9200/_bulk --header 'content-type: application/json' --data-binary @classes.json

 

매핑테스트

매핑 테스트(빈 mappings)
매핑에 사용될 json파일
매핑추가

  • curl -XPUT localhost:9200/classes/class/_mapping?include_type_name=true -d @classesRating_mapping.json  -H 'Content-Type: application/json'

검색

  • curl -XGET localhost:9200/basketball/record/_search?pretty

조건부 검색(points가 30인 Document만 출력)

  • curl -XGET 'localhost:9200/basketball/record/_search?q=points:30&pretty'
  • curl -XGET localhost:9200/basketball/record/_search?pretty --header 'content-type:application/json' -d ' 

"query":{
"term":{"points":30}
}
}'

메트릭 어그리게이션

  • curl -XGET localhost:9200/_search?pretty --data-binary @avg_points_aggs.json  --header 'content-type:application/json'
    • "points" : 20과  "points" : 30의 평균값 출력
  • curl -XGET localhost:9200/_search?pretty --data-binary @max_points_aggs.json  --header 'content-type:application/json'
    • max값 출력가능
  • curl -XGET localhost:9200/_search?pretty --data-binary @min_points_aggs.json  --header 'content-type:application/json'
    • min값 출력
  • curl -XGET localhost:9200/_search?pretty --data-binary @sum_points_aggs.json  --header 'content-type:application/json'

stats

  • curl -XGET localhost:9200/_search?pretty --data-binary @stats_points_aggs.json  --header 'content-type:application/json'

버켓 어그리게이션

  • curl -XGET localhost:9200/_search?pretty --data-binary @terms_aggs.json --header 'content-type:application/json'
    • LA와 cicago를 group하여 출력

팀별로 document를 어그리게이션 후 팀별 stats 정보 출력

  • curl -XGET localhost:9200/_search?pretty --data-binary @stats_by_team.json --header 'content-type:application/json'

'기타 > ELK' 카테고리의 다른 글

Logstash  (0) 2020.12.19
Kibana  (0) 2020.12.18

+ Recent posts