如何为字段的每个唯一值获取最后一个Elasticsearch文档



我在Elasticsearch中有一个数据结构,看起来像:

{
"name": "abc",
"date": "2022-10-08T21:30:40.000Z",
"rank": 3
}

我想为每个唯一的名称获取最近日期的文档(或整个文档(的级别。

我现在有这个:

"aggs": {
"group-by-name": {
"terms": {
"field": "name"
},
"aggs": {
"max-date": {
"max": {
"field": "date"
}
}
}
}
}

我如何获得每个结果的排名(或整个文档(,如果可能的话,在1个请求中?

您可以使用以下选项

  1. 折叠
"collapse": {
"field": "name"         
},
"sort": [
{
"date": { 
"order": "desc"
}
}
]
  1. 热门点击聚合
{
"aggs": {
"group-by-name": {
"terms": {
"field": "name",
"size": 100
},
"aggs": {
"top_doc": {
"top_hits": {
"sort": [
{
"date": {
"order": "desc"
}
}
],            
"size": 1
}
}
}
}
}
}

最新更新