我正在使用JavaAPI进行ElasticSearch,并且在执行搜索时试图只获取每个文档的最新版本(这是一个自定义字段)。
例如:
{ id: 1, name: "John Greenwood", version: 1}
{ id: 1, name: "John Greenwood", version: 2}
{ id: 2, name: "John Underwood", version: 1}
当我和约翰一起搜寻时,我想要这个结果:
{ id: 1, name: "John Greenwood", follower_count: 2}
{ id: 2, name: "John Underwood", follower_count: 1}
显然,我应该使用聚合,但我不确定如何在JavaAPI中使用它们。另外,我如何重新分组具有ID的文档?因为我只需要相同ID的最新版本
1条答案
按热度按时间dxxyhpgq1#
Tldr;
是的,你的思路是对的。
您将需要对每个用户的
id
进行聚合。然后根据版本获取top_hit
。溶液
第一个聚合
per_id
是按用户的id
对用户进行分组,然后在此聚合内执行另一个聚合。lastest_version
将选择关于版本的最佳命中。我选择size: 1
以获得每组的前1名。重现