我的文档包含版本号:
{
"original_id" : "1234",
"version" : 1
}
{
"original_id" : "1234",
"version" : 2
}
{
"original_id" : "4567",
"version" : 1
}
我只需要选择具有不同id和最大版本号的文档。
最终结果应该是:
[
{
"original_id": 1234,
"version" : 2
},
{
"original_id" : 4567,
"version" : 1
}
]
我对文档感到困惑 - 我应该使用aggs吗?我做了,但我仍然得到了所有这些。我只想要顶级版
SQL中的:
选择distinct(original_id)作为id,max(version)作为docs按文档分组的版本;
这是我当前的查询:
{
"from" : 0,
"size" : 25,
"sort": [{
"version": {
"order": "desc",
"mode": "max"
}
}],
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"match": {"original_id": "95936d0b-0de4-44ad-81d3-b95d3200c27f"}
}
]
}
},
"filter": {
"range": {
"start" : {
}
}
}
}
}
}
答案 0 :(得分:1)
是的,你应该使用聚合。 。 .following是对您的要求的查询。 `
{
"aggs": {
"agg1": {
"terms": {
"field": "original_id",
"size": 0
},"aggs": {
"agg2": {
"max": {
"field": "version"
}
}
}
}
}
`