【ダッシュボード】重複行を1行にまとめて表示する方法

お世話になります。

以下のように"id"と"time"が存在するindexがあります。

id time
1 2020/6/1 10:00
1 2020/6/1 11:00
1 2020/7/1 11:00
2 2020/6/1 12:00
2 2020/6/1 12:00
3 2020/7/1 12:00

上記indexに関して、同じidの中でtimeが最も過去の日付のデータのみ、
ダッシュボードに一覧で表示させたい(下記例)のですが、実現可能でしょうか?
Discoverにて実現方法が分からず質問させて頂きました。

id time
1 2020/6/1 10:00
2 2020/6/1 12:00
3 2020/7/1 12:00

お手数ですが、回答頂けますと幸いです。
以上、宜しくお願い致します。

1 Like

Aggregationを使うのはいかがでしょうか?
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

SQLでいうところのgroup byしてsumする、みたいなことができます。

回答頂きありがとうございます。

Top hits Aggregationを試したところ、同じidの中でtimeが最も過去の日付のデータを取得することが出来ました。(下記コマンド)

GET /<index名>/_search
{
  "size": 0,
  "aggs": {
    "bucket": {
      "terms": {
        "field": "id"
      },
      "aggs": {
        "update": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "time": {
                  "order": "asc"
                }
              }
            ],
            "_source": {
              "includes": [
                "name",
                "time"
              ]
            }
          }
        }
      }
    }
  }
}

上記に関して、再度質問させて頂きます。

▼登録データ(idとtime以外に、"name"も追加)

①Kibana visualizeのData TableにてTop hits Aggregationを試したところ(下記設定値参照)
idとtimeの一覧は表示できますが、idに紐づく"name"を表示する方法が分かっておりません。

同じidの中でtimeが最も過去の日付のデータを表示+idに紐づく"name"を表示をする方法はありますでしょうか?

②一覧がidの降順となっていますが、デフォルトでtimeの昇順に設定する方法はありますでしょうか?

▼dataTable設定値


▼dataTable表示結果

お手数ですが、回答頂けますと幸いです。
宜しくお願い致します。

メトリックの追加をクリックして、top-hitsを選択して、対象のフィールドにnameを選択すれば、timeの隣に表示されると思いますよ。

tableをtimeの昇順で表示するように▲をクリックした状態で保存すれば、その情報も保存されます。そのため、dashboardに表示した時などもその状態がキープされます。

返信頂きありがとうございます。

上記で実現できました。大変助かりました。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.