[最終更新 2017.8.17] ※技術メモ
こんにちは、ほけきよです。
どうせなら、データをかっこよく表示したいじゃないですか? 今回は、kibanaという可視化ツールについて、あんま日本語の資料がないのでメモ
尚、導入編です。 kibanaの使い方は次の記事であげる予定です
Kibanaとは
かっこよく可視化するやつ。ここにデモが色々とある
その中のHTTPのデモはこんな感じ。かっこよい。
- 可視化ツール
- Elasticsearch(検索エンジン)と連携して使う
- Elasticsearchの検索結果を簡単に可視化する奴
ElasticSearchとは
- データを保管し、検索できるやつ
インストール
インストール手順 サマリ
- Java1.8 : ubuntu
- Elasticsearch
- Kibana
ubuntuの場合、
私のgithubから、install.sh
を叩くと一通り入るはずです。
java
recommend java1.8なので。 ubuntuバージョンのインスコ方法
# repository追加 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update # インスコ sudo apt-get install oracle-java8-installer # 確認(1.8ならOK) java -version # 環境変数設定 sudo apt-get inatall oracle-jave8-set-default
ElasticSearch
# Elasticsearchをダウンロードする curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz # 解凍・起動 tar -xvf elasticsearch-5.5.0.tar.gz cd elasticsearch-5.5.0/bin ./elasticsearch
ElasticSearch plugin
binディレクトリ上のelasticsearch-plugin
を実行
とりあえずanalysis-kuromojiを入れる(日本語対応)
./elasticsearch-plugin install analysis-kuromoji
Kibana
# Kibanaをダウンロードする wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux-x86_64.tar.gz ## 解凍・起動 sha1sum kibana-5.5.0-linux-x86_64.tar.gz tar -xzf kibana-5.5.0-linux-x86_64.tar.gz cd kibana/
起動確認
ElasticSearchとKibanaが両方共起動しているとき、localhost:5601
にアクセスすると、次のような画面になる。
チュートリアル的に試す1
データを投げて可視化するまで。とりあえずshakespeareのデータを使ってみる。
elasticsearchとkibanaを起動
bash elasticsearch-5.5.0/bin/elasticsearch bash kibana-5.5.0-linux-x86_64/bin/kibana
データを取ってくる
wget https://download.elastic.co/demos/kibana/gettingstarted/shakespeare.json
データのマッピング、データの投入
tutorialではcurlを使って、elasticsearchにデータをぶち投げまくる
まずマッピング。投入したデータをどう調理するか。 マッピングの具体例はこっち? 、shakespearのデータ、これをそのままコピーしてシェルに貼り付ける。
curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d' { "mappings": { "user": { "_all": { "enabled": false }, "properties": { "title": { "type": "text" }, "name": { "type": "text" }, "age": { "type": "integer" } } }, "blogpost": { "_all": { "enabled": false }, "properties": { "title": { "type": "text" }, "body": { "type": "text" }, "user_id": { "type": "keyword" }, "created": { "type": "date", "format": "strict_date_optional_time||epoch_millis" } } } } } '
つぎにデータ投入
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
うにょうにょとelasticsearchのログが動き始める。
ロードができているか確認
curl -XGET 'localhost:9200/_cat/indices?v&pretty'
次のような類のものが表示されたら勝ち(shakespeareがあるかどうかをチェックしておこう)
health status index pri rep docs.count docs.deleted store.size pri.store.size yellow open shakespeare 5 1 111396 0 17.6mb 17.6mb ...
index patternの定義
- kibanaページを開く : ブラウザで
localhost:5601
(デフォルト) - Mangaement ->Index Patterns -> Create Index Patterns
- Index name or patternに取り出すパターンを(
*
)を使ってうまく記述- 例 : shakespearのデータなら
shake*
など
- 例 : shakespearのデータなら
こんな感じで、値が保存されている
Visualize
Visuzlizeのところ。 いろいろ出来ることはあるけど、とりあえず棒グラフでも作ってみる。
役割別、喋ったカウントをしたものがコチラ
参考
大事な用語
- Aggregation : データを集める
- bucket 検索結果を指定した条件に分類(東京, 大阪, 名古屋, … など)
- 棒グラフの縦棒, 円グラフの分割の仕方など。
- filter(条件でフィルタをかける)
- terms(各項目ごとに分ける)
- nested, children, range
- metrics
- Bucketで区切られたものの中身を集計
- min, max, sum, avg, top_hits, percentilesなど。
- field 見るデータ
使い方
- Visualize->Create New Visualization
- 可視化したいものを選ぶ
- bucketを使ってどこを可視化するか決める
- Split Slicesクリックする
- Aggregation ListからRangeを選ぶ
- Fieldリストからbalanceを選ぶ
- rangeを指定する
python-ElasticSearch-Kibana
ここまででだいたいのことが出来るけど、curlコマンド使ってシェルで色々するのは、めんどくさい。
なので、pythonからelasticsearchのデータを出し入れ出来るようにする。
導入
elasticsearchをpythonにいれるだけでOK
pip install elasticsearch
あとはデータをみながらのほうがわかりやすいので、詳細は次記事参照!