ログを集計しています。
ログには、項目A、項目B、項目Cとあり、内容は同じ様なデータが入っています。
この項目A,B,Cを足し込んで集計し、Visualizeする事は可能でしょうか?
ログ形式:日付 項目A 項目B 項目C
20170517 北海道 東京 名古屋
20170517 北海道 東京 大阪
20170517 青森 東京 名古屋
Visualizeのterm等で一つにしたい。
北海道 2
青森 1
東京 3
名古屋 1
大阪 1
ログを集計しています。
ログには、項目A、項目B、項目Cとあり、内容は同じ様なデータが入っています。
この項目A,B,Cを足し込んで集計し、Visualizeする事は可能でしょうか?
ログ形式:日付 項目A 項目B 項目C
20170517 北海道 東京 名古屋
20170517 北海道 東京 大阪
20170517 青森 東京 名古屋
Visualizeのterm等で一つにしたい。
北海道 2
青森 1
東京 3
名古屋 1
大阪 1
うーん、既存の機能でさくっと実現するのは難しいかもしれないですね。。。
無理やり&Data TableじゃなくてLineによるVisualizeになっちゃいますが、
やろうと思えばTimelionのVisualizeで以下クエリで近いものは出来るかもです。
※実際にデータ投入して動作確認しているわけではないので、クエリの書き方はドキュメントを確認しながら見てもらえればと。
.sum(.es(index=INDEX名,metric=count,q=項目A:東京),.es(index=INDEX名,metric=count,q=項目B:東京),.es(index=INDEX名,metric=count,q=項目C:東京))
なるほど。難しいようですね。
AかつBの様データの集計するには事前に何かしら細工した方が良さそうですね。
ありがとうございました。
例えば、kibanaのManagementからIndex Pattensから見られる scripted Fieldではどうでしょう。
test1, test2, test3というフィールドに値が入っているとし、scipted fieldで指定するtest_arrayというフィールドに集めておいて、
このフィールドに対してVisualizeを設定するイメージです。
期待する結果は、tokyo=2. osaka=1, kyoto=1となるような、test1, test2, test3に値を入れました。
POST forum/test/1
{
"test1": "kyoto",
"test2": "osaka",
"test3": "tokyo",
"@timestamp": "2017/05/18 12:00:00"
}
POST forum/test/2
{
"test1": "tokyo",
"@timestamp": "2017/05/19 12:00:00"
}
stringフィールド、painlessを指定し、scriptにこのように書きました。
内容としては、nullでなければ配列に足すというものです。
def t = [];
if (doc['test1.keyword'].value != null) {
t.add(doc['test1.keyword'].value);
}
if (doc['test2.keyword'].value != null) {
t.add(doc['test2.keyword'].value);
}
if (doc['test3.keyword'].value != null) {
t.add(doc['test3.keyword'].value);
}
return t;
このtest_arrayフィールドで可視化を作ると、下のように見ることができました。
事前に集計用のフィールドに集めておくなどしておいた方がパフォーマンスは良いと思いますが、
方法の1つとして。
ありがとうございます。
ばっちり希望通りの集計が出来ました。
スペック的に余り良くないサーバなので、タイムアウトが出たりしたので
logstashで取込み時に集計用フィールドに集めることを検討します。
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
© 2020. All Rights Reserved - Elasticsearch
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the Apache Software Foundation in the United States and/or other countries.