グラフを作成する際にX軸をユーザIDで分割するさいに軸に表示される値をユーザ名にするような方法はありますでしょうか。
Kibanaは 6.8.2です。
グラフを作成する際にX軸をユーザIDで分割するさいに軸に表示される値をユーザ名にするような方法はありますでしょうか。
Kibanaは 6.8.2です。
上記のようなデータで、重複の可能性があるのでIDで分割は行うが表示はユーザ名としたい形です。
@hashimoto さん、通常のVisualizationではできなさそうですね。ちょっと小難しくなりますが、Vegaを使うとやりたいことはできると思います。こちらで試しにやってみました。ご参考になれば。
サンプルデータ登録:
POST forum_229404/_bulk
{"index": {}}
{"userId": "a", "userName": "あ", "code": "x"}
{"index": {}}
{"userId": "b", "userName": "べ", "code": "x"}
{"index": {}}
{"userId": "c", "userName": "し", "code": "x"}
{"index": {}}
{"userId": "a", "userName": "あ", "code": "y"}
{"index": {}}
{"userId": "a", "userName": "あ", "code": "z"}
{"index": {}}
{"userId": "b", "userName": "べ", "code": "z"}
{"index": {}}
{"userId": "a", "userName": "あ", "code": "z"}
アグリゲーションリクエストのテスト。
terms
アグリゲーションしつつ、それ以外のフィールドを参照するためにtop_hits
も使っているのがミソです。
GET forum_229404/_search
{
"size": 0,
"aggs": {
"userIds": {
"terms": {
"field": "userId.keyword", "size": 10
},
"aggs": {
"doc": {"top_hits": {"size": 1}}}}}
}
KibanaのVisualizationをVegaで作成:
{
"$schema": "https://vega.github.io/schema/vega/v4.3.0.json",
"title": "表示値を別フィールドの値にする",
"data": [
{
"name": "es",
"url": {
"%context%": true,
"index": "forum_229404",
"body": {
"aggs": {
"userIds": {
"terms": {"field": "userId.keyword", "size": 10},
"aggs": {"doc": {"top_hits": {"size": 1}}}
}
},
"size": 0
}
},
"format": {"property": "aggregations.userIds.buckets"}
}
],
"scales": [
{
"name": "xscale",
"type": "band",
"domain": {"data": "es", "field": "key"},
"range": "width",
"padding": 0.05,
"round": true
},
{
"name": "yscale",
"domain": {"data": "es", "field": "doc_count"},
"nice": true,
"range": "height"
}
],
"axes": [
{"orient": "bottom", "scale": "xscale", "labelFontSize": 36},
{"orient": "left", "scale": "yscale", "labelFontSize": 24}
],
"marks": [
{
"type": "rect",
"from": {"data": "es"},
"encode": {
"enter": {
"x": {"scale": "xscale", "field": "key"},
"width": {"scale": "xscale", "band": 1},
"y": {"scale": "yscale", "field": "doc_count"},
"y2": {"scale": "yscale", "value": 0}
},
"update": {"fill": {"value": "steelblue"}},
"hover": {"fill": {"value": "red"}}
}
},
{
"type": "text",
"from": {"data": "es"},
"encode": {
"enter": {
"x": {"scale": "xscale", "signal": "datum.key", "band": 0.5},
"y": {"scale": "yscale", "signal": "datum.doc_count", "offset": -2},
"align": {"value": "center"},
"baseline": {"value": "bottom"},
"fill": {"value": "#333"},
"text": {"field": "doc.hits.hits[0]._source.userName"},
"fontSize": {"value": 24}
}
}
}
]
}
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.