にtop_hits結果の上に集約するかは、例えば、文書である:どのように私はここでelasticsearch
{
"player": "Jim",
"score" : 5
"timestamp": 1459492890000
}
{
"player": "Jim",
"score" : 7
"timestamp": 1459492895000
}
{
"player": "Dave",
"score" : 9
"timestamp": 1459492894000
}
{
"player": "Dave",
"score" : 4
"timestamp": 1459492898000
}
私は、各プレーヤーの最新のスコアを取得し、すべてのそれらのスコアの平均値を取得したいです。したがって、答えは5.5になります。ジムの最新スコアは7、Daveの最新スコアは4です。これら2つの平均は5.5
です。プレーヤーの「最新の」ドキュメントを入手するには、top_hits集計を使用するしかありませんでした。しかし、最新の文書を入手した後、別の集計を行うことはできないようです。
これは私が思い付いたベストです:しかし、これは私にこのエラーが発生します
{
"aggs": {
"last_score": {
"terms": { "field": "player" },
"aggs": {
"last_score_hits": {
"top_hits": {
"sort": [ { "timestamp": { "order": "desc" } } ],
"size": 1
},
"aggs": {
"avg_score": {
"avg": { "field": "score" }
}
}
}
}
}
}
}
:
Aggregator [last_score_hits] of type [top_hits] cannot accept sub-aggregations
同様top_hitsを使用せずに、この検索を達成する別の方法がある場合は、私はそれのためにすべてである。
これはOPが望んでいるとは思いません。 –