我有包含版本号的文档:

{
  "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中:



这是我当前的查询:
{
    "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" : {
                    }
                }
            }
        }
    }
}

最佳答案

是的,您应该使用聚合。 。 .following是您要求的查询。
`

{
  "aggs": {
    "agg1": {
      "terms": {
        "field": "original_id",
        "size": 0
      },"aggs": {
        "agg2": {
          "max": {
            "field": "version"
          }
        }
      }
    }
  }

`

10-01 18:09
查看更多