elasticsearch - 分组和过滤结果

时间:2016-07-18 09:18:49

标签: elasticsearch

我有DocumentVersions的索引 - 文档的不同版本。

{versionId: 1, documentId:1, ...},
{versionId: 2, documentId:1, ...},
{versionId: 3, documentId:2, ...},
{versionId: 4, documentId:2, ...},
...

默认情况下,用户只能接收最新版本的文档

Solr 中,我使用 ResultGrouping - group.field=documentId, group.limit=1, group.sort=versionId desc

我如何通过elasticsearch获得类似的东西?

2 个答案:

答案 0 :(得分:1)

这可以通过documentIdtop_hits子聚合上的术语聚合来实现

POST /index/_search
{  
   "size": 0,
   "aggs": {
      "docs": {
         "terms": {
            "field": "documentId",
            "size": 1000
         },
         "aggs": {
            "latest": {
               "top_hits": {
                  "size": 1,
                  "sort": {"versionId": "desc"}
               }
            }
         }
      }
   }
}

答案 1 :(得分:0)

我刚发现Field Collapsing - 实际上是基于聚合: - /

希望有一种更方便的方式。