실시간 검색어를 시각화 하기 전에 여러 연습을 통해 키바나 시각화 연습을 해볼 예정이다.
100mb 이하의 csv, tsv, json 데이터를 쉽게 import 할 수 있다.
kibana 페이지에 접속후 data visualizer를 검색하면 된다.
import data로 데이터를 넣는다. 필자는 kaggle에서 csv 다운로드 받아와서 넣었다..
타임 필드 설정하고, 매핑하고 임포트하면 인덱스와 인덱스패턴을 생성가능하다.
하지만 그냥 비쥬얼라이저를 통해 가져오면 널값이나 json text로 들어온 값을 파싱하기 어렵다. 따라서
로그스태쉬로 읽어오겠다.
vi logstash-tmdb.conf
input{
file{
path => "/${path}/tmdb_5000_movies.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output{
stdout {}
}
start_position => "beginning" 은 처음 파일을 읽을때 시작 지점부터 읽는다이다.
원래는 이전에 읽은 위치부터 시작하지만 sincedb_path를 /dev/null로 주면서 offset을 저장하지 않아 계속 처음부터 읽게 된다.
하지만 이렇게 읽어도 데이터가 문제가 많다.. 필터를 걸어야한다..
filter{
csv{
}
date{
match => ["_release_date", "YYYY-MM-DD"]
target => "release_date"
timezone => "UTC"
remove_field => "_release_date"
}
}
데이터가 이제 깔끔하게 나온다.
{
"genres" => "[{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"name\": \"Romance\"}]",
"vote_count" => "30",
"original_language" => "en",
"overview" => "In a small North Carolina town, Paul, a womanizer, meets Noel, a confused intellectual returning home for the first time in years since she left for boarding school. The film depicts the typical romance of a good girl and a bad boy, in an interesting way.",
"status" => "Released",
"runtime" => "108",
"title" => "All the Real Girls",
"vote_average" => "5.9",
"homepage" => "http://www.sonyclassics.com/alltherealgirls/",
"release_date" => 2003-01-01T00:00:00.000Z,
"original_title" => "All the Real Girls",
"id" => "13132",
"tagline" => "Love is a puzzle. These are the pieces.",
"budget" => "0",
"popularity" => "3.65924",
"revenue" => "0"
}
genres에서 id는 필요없다. name만 뽑도록 json parsing을 해보자.
json{
source => "field"
target => "field"
}
ruby{
code => "
field = event.get('field').map{ |v| v['column']}
event.set('field', field')
}
이제 전처리가 완료되었다.
ElasticSearch에 인덱스 매핑을 하기 위해 output을 변경한다.
인덱스 템플릿
로그스태쉬 사용중 대량의 실시간 데이터를 받을때는 인덱스 템플릿을 사용한다.
키바나에서 엘라스틱 인덱스 쓰려면?
엘라스틱서치 인데스를 사용하기 위해서는 먼저 키바나 인덱스 패턴을 생성해야한다.