ELK

Elasticsearch + Kibana - 2 (Elasticsearch 데이터 입력 및 활용)

김모우 2020. 12. 10. 19:36
728x90
반응형

 

Elasticsearh에 인덱스 생성 및 데이터 입력 추가적으로 Kibana Terms로 활용을 위한 Mapping 작업까지 진행해주도록 하겠습니다.

 

 

1. Elasticsearh 인덱스 생성

 

- 데이터 입력을 위한 인덱스를 먼저 생성해 줍니다.
- 인프런 강의 데이터 활용을 위해 아래와 같이 생성해주었습니다.

# curl -X PUT localhost:9200/basketball

 

 

2. Mapping 생성

 

- 신규 ElasticVersion 에서는 Content-Type을 반드시 명시해줘야됩니다!!
- Mapping을 위한 json 파일 생성

# vim basketball_mapping.json
.
.
.
{ "record" : { "properties" : { "team" : { "type" : "text", "fielddata" : true }, "name" : { "type" : "text", "fielddata" : true }, "points" : { "type" : "long" }, "rebounds" : { "type" : "long" }, "assists" : { "type" : "long" }, "blocks" : { "type" : "long" }, "submit_date" : { "type" : "date", "format" : "yyyy-MM-dd" } } } }
.
.
.
: wq

- 인프런 강의 파일을 참조하였습니다.

# curl -H 'Content-Type: application/json' -X PUT 'localhost:9200/basketball/record/_mapping?include_type_name=true&pretty' -d @basketball_mapping.json



# curl -X GET 'localhost:9200/basketball?pretty'
- 아래와 같이 Mapping이 생성된 것을 확인하실 수 있습니다.

 

 

3. 데이터 입력

 

- 데이터 입력을 위한 Json 파일 생성
# vim bulk_basketball.json
.
.
.
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "1" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry", "points" : 30,"rebounds" : 3,"assists" : 4, "blocks" : 5, "submit_date" : "2016-10-11"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "2" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry","points" : 32,"rebound" : 5,"assist" : 8, "blocks" : 5, "submit_date" : "2016-10-13"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "3" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry","points" : 28,"rebound" : 2,"assist" : 3, "blocks" : 1, "submit_date" : "2016-10-17"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "4" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry","points" : 36,"rebound" : 1,"assist" : 2, "blocks" : 1, "submit_date" : "2016-11-20"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "5" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry","points" : 36,"rebound" : 1,"assist" : 2, "blocks" : 1, "submit_date" : "2016-11-25"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "6" } }
{"team" : "Golden States Warriors","name" : "Stephen Curry","points" : 32,"rebound" : 1,"assist" : 4, "blocks" : 1, "submit_date" : "2016-11-28"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "7" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert", "points" : 3,"rebounds" : 11,"assists" : 4, "blocks" : 7, "submit_date" : "2016-10-12"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "8" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert","points" : 4,"rebound" : 13,"assist" : 8, "blocks" : 5, "submit_date" : "2016-10-14"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "9" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert","points" : 8,"rebound" : 10,"assist" : 3, "blocks" : 6, "submit_date" : "2016-10-18"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "10" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert","points" : 12,"rebound" : 9,"assist" : 2, "blocks" : 6, "submit_date" : "2016-11-10"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "11" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert","points" : 12,"rebound" : 14,"assist" : 2, "blocks" : 7, "submit_date" : "2016-11-22"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "12" } }
{"team" : "Utah Jazz","name" : "Rudy Gobert","points" : 8,"rebound" : 10,"assist" : 4, "blocks" : 5, "submit_date" : "2016-11-27"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "13" } }
{"team" : "Washington Wizards","name" : "John Wall","points" : 8,"rebound" : 1,"assist" : 13, "blocks" : 2, "submit_date" : "2016-10-18"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "14" } }
{"team" : "Washington Wizards","name" : "John Wall","points" : 13,"rebound" : 2,"assist" : 12, "blocks" : 3, "submit_date" : "2016-11-10"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "15" } }
{"team" : "Washington Wizards","name" : "John Wall","points" : 15,"rebound" : 3,"assist" : 12, "blocks" : 3, "submit_date" : "2016-11-22"}
{ "index" : { "_index" : "basketball", "_type" : "record", "_id" : "16" } }
{"team" : "Washington Wizards","name" : "John Wall","points" : 22,"rebound" : 4,"assist" : 14, "blocks" : 3, "submit_date" : "2016-11-27"}
.
.
.
:wq

# curl -H 'Content-Type: application/json' -X POST 'localhost:9200/_bulk?pretty' --data-binary @bulk_basketball.json


- 데이터 확인
# curl -X GET 'localhost:9200/basketball/_search?pretty'

 

 

4. Kibana 접속 및 인덱스 패턴 생성

 

- 생성해 준 Index를 Kibana와 연결시켜줍니다.
- Management -> Stack Management -> Index Patterns 클릭

 



- Create Index Pattern 클릭
- Index Pattern name 입력


- Next Step
- Time Field 연결
- Create index pattern

 

 

5. 데이터 Discover 및 Visualize

 

- Index Pattern을 입력한 Basketball로 바꿔줍니다.



- 데이터의 > 버튼 클릭 후 필요한 Column만 토글할 해줍니다.

- 아래와 같이 조건 식으로 필요한 데이터만 볼 수 있습니다.


- Visualize 클릭
- Create visualization->Graph 종류 선택->Source 선택
- Y-axis, X-axis 입력
- Update


- Discover 상에는 문제가 없는데 Team 부분 Text가 공백에 따라서 나뉘는데 원인을 찾아봐야될거 같습니다...
- 원인 파악 후 수정 한 내용 아래 링크 참고 부탁드립니다.
  URL: https://usheep91.tistory.com/62?category=887212
 

Elasticsearch + Kibana - 3 (형태소 분석기 추가)

저번에 포스팅에서 입력한 Basketball 관련 데이터 입력 시 공백에 따라 데이터가 구분되는 현상을 수정하기 위해 형태 소 분석기 nori를 추가하였고, termvector 데이터 확인 시 최대 3개의 데이터("Gold

usheep91.tistory.com

 

다음 포스팅에서는 csv 형태 파일을 logstash를 이용하여 Import하고 데이터 시각화를 진행해보겠습니다.

728x90
반응형