# 【Datatable】Top hits Aggregationについて②

**URL:** <https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [June 22, 2020, 2:10am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985 "2020-06-22T02:10:03Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)\
**Post date:** [June 22, 2020, 2:10am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/1 "2020-06-22T02:10:03Z")

</div>

お世話になります。  
以前質問させて頂いた、DatatableのTop hits Aggregationに関して再度質問させて頂きます。

> [@【ダッシュボード】重複行を1行にまとめて表示する方法](https://discuss.elastic.co/t/topic/236829):
>
> お世話になります。 以下のように"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 お手数ですが、回答頂けますと幸いです。 以上、宜しくお願い致します。

▼実現したいこと  
下記indexデータにおいて  
同一のnameの中でtimeが最も過去日付のデータのみ、Datatableに表示  
**かつ**  
**同一のnameの中でidが異なり、timeが最も過去日付が複数あった場合、全件Datatableに表示**

▼indexデータ

| name | id | time | |
| --- | --- | --- | --- |
| AAA | 1 | Jun 1, 2020 @ 10:00:00.000 | …① |
| AAA | 2 | Jun 1, 2020 @ 10:00:00.000 | …② |
| BBB | 3 | Jun 1, 2020 @ 10:00:00.000 | …③ |
| BBB | 3 | Jun 2, 2020 @ 10:00:00.000 | …④ |

▼Datatableの設定値

 ![test1](https://us1.discourse-cdn.com/elastic/original/3X/5/0/503afcfc82cb07d7167e045549d9c3f627df2229.png)  
 ![test2](https://us1.discourse-cdn.com/elastic/original/3X/c/e/ced11adfb64272a470ea446b26df1569c301c5b8.png)  
 ![test3](https://us1.discourse-cdn.com/elastic/original/3X/1/b/1b4c7c064b3575a42207d5f32642b1bd133de6d7.png)

▼取得一覧

| name | id | time | |
| --- | --- | --- | --- |
| AAA | 1 | Jun 1, 2020 @ 10:00:00.000 | …① |

**name「AAA」に関して、①②とも表示させたいのですが、①のみ表示されます。**  
**①②とも表示させる方法はありますでしょうか？**

idのメトリックの集約-連結のサイズを「2(2以上の値)」に設定したところ  
以下のように、「AAA」は①②のデータが表示されましたが、  
「BBB」も（③のデータのみ表示させたいが）③④のデータが表示されます。

| name | id | time |
| --- | --- | --- |
| AAA | 1,2 | Jun 1, 2020 @ 10:00:00.000 |
| BBB | 3,3 | Jun 1, 2020 @ 10:00:00.000 |

お手数ですが、有識者の方は回答頂けますと幸いです。  
以上、宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![Koji\_Kawamura](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/koji_kawamura/32/93938_2.png) [@Koji\_Kawamura](https://discuss.elastic.co/u/Koji_Kawamura)\
**Post date:** [July 15, 2020, 8:09am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/2 "2020-07-15T08:09:47Z")

</div>

@harue さん、

以下の設定でできると思います。  
最も古いドキュメントはtop\_hitを使わずにtermsで取得した方が後続のアグリゲーションできるのでおすすめです。top\_hitはメトリックアグリゲーションなので、そこで終わってしまいます。

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/c/e/cea60598ae35e46004bede980b2fab0f25304a71.png)

こちらで利用したサンプルデータセットです。質問内容に記載のものに加え、name, id, timeが重複するCCCの2ドキュメントを追加しました。

```auto
POST forum_237985/_bulk
{"index":{"_id":"d1"}}
{"name":"AAA","id": "1","time":"2020-06-01T10:00:00+09:00"}
{"index":{"_id":"d2"}}
{"name":"AAA","id": "2","time":"2020-06-01T10:00:00+09:00"}
{"index":{"_id":"d3"}}
{"name":"BBB","id": "3","time":"2020-06-01T10:00:00+09:00"}
{"index":{"_id":"d4"}}
{"name":"BBB","id": "3","time":"2020-06-02T10:00:00+09:00"}
{"index":{"_id":"d5"}}
{"name":"CCC","id": "3","time":"2020-06-01T10:00:00+09:00"}
{"index":{"_id":"d6"}}
{"name":"CCC","id": "3","time":"2020-06-01T10:00:00+09:00"}

```

ただ、[237414で質問](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237414)されているタイムフィルタの要件を絡めると、やはりVegaが必要になりますね。

ご参考になれば幸いです。

---

<div class="post-metadata">

**Author:** ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)\
**Post date:** [July 22, 2020, 12:48am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/3 "2020-07-22T00:48:51Z")

</div>

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

お手数ですが、上記DataTableのMetricsとBucketsの詳細な設定値を教えて頂けますでしょうか？  
（試すのですが、うまくいかず…）

---

<div class="post-metadata">

**Author:** ![Koji\_Kawamura](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/koji_kawamura/32/93938_2.png) [@Koji\_Kawamura](https://discuss.elastic.co/u/Koji_Kawamura)\
**Post date:** [July 23, 2020, 4:42am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/4 "2020-07-23T04:42:06Z")

</div>

@harue さん、作成したDataTableをエクスポートしてここにおいておきました。前述の`_bulk`リクエストで作成したサンプルインデックスを利用します。ご確認ください。  
[https://gist.githubusercontent.com/ijokarumawak/56e608236700909b1560bafd59ced823/raw/df459334e29218ee9d411f4ace3251aca28df734/forum\_237985.ndjson](https://gist.githubusercontent.com/ijokarumawak/56e608236700909b1560bafd59ced823/raw/df459334e29218ee9d411f4ace3251aca28df734/forum_237985.ndjson)

---

<div class="post-metadata">

**Author:** ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)\
**Post date:** [July 27, 2020, 3:12am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/5 "2020-07-27T03:12:11Z")

</div>

回答頂きありがとうございます。  
上記のエクスポートファイルで実現できました。

お手数ですが、追加で質問させて頂きます。

▼実現したいこと  
下記indexデータにおいて  
同一の"name","id"の中でtimeが最も過去日付のデータのみ、Datatableに表示(④)  
**かつ**  
**同一の"name"の中で"id"が異なる場合、全件Datatableに表示** (①,②,③)

| name | id | time | |
| --- | --- | --- | --- |
| AAA | 1 | Jun 1, 2020 @ 10:00:00.000 | …① |
| AAA | 2 | Jun 1, 2020 @ 10:00:00.000 | …② |
| AAA | 3 | Jun 1, 2020 @ 11:00:00.000 | …③ |
| BBB | 3 | Jun 1, 2020 @ 10:00:00.000 | …④ |
| BBB | 3 | Jun 2, 2020 @ 10:00:00.000 | …⑤ |

▼DataTable表示結果

| name | id | time | |
| --- | --- | --- | --- |
| AAA | 1 | Jun 1, 2020 @ 10:00:00.000 | …① |
| AAA | 2 | Jun 1, 2020 @ 10:00:00.000 | …② |
| AAA | 3 | Jun 1, 2020 @ 11:00:00.000 | …③ |
| BBB | 3 | Jun 1, 2020 @ 10:00:00.000 | …④ |

前回ご質問したDataTableの条件は、  
同一の"name"の中で"id"が異なり、 **"time"が最も過去日付が複数あった場合** 、全件DataTableに表示でしたが、今回のご質問は"time"が異なる場合でもDataTableに表示させたいです。  
DataTableで実現する方法はありますでしょうか？（DataTableで実現できない場合、他に方法はありますでしょうか？）

大変お手数ですが、回答を頂けましたら幸いです。  
宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 24, 2020, 3:12am UTC](https://discuss.elastic.co/t/datatable-top-hits-aggregation/237985/6 "2020-08-24T03:12:15Z")

</div>

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