弹性搜索分组唯一值

时间:2017-09-15 11:19:04

标签: elasticsearch group-by distinct

我有一些数据:

[{
    "article_id": 257710962,
    "category_id": "category1"
},
{
    "article_id": 257710962,
    "category_id": "category2"
},
{
    "article_id": 257713968,
    "category_id": "category3"
},
{
    "article_id": 257717376,
    "category_id": "category4"
}]

我应如何查询以获得此类结果

[{
    "article_id": 257710962,
    "category_id": ["category1", "category2"]
},
{
    "article_id": 257713968,
    "category_id": "category3"
},
{
    "article_id": 257717376,
    "category_id": "category4"
}]

我需要执行该查询,因为我在页面上使用分页。因此,必须防止重复。 (我使用article_id作为我的主键)

1 个答案:

答案 0 :(得分:0)

如果您的每个文档来源都是这样的

"_source": {
               "article_id": 257710962,
               "category_id": "category2"
            }

然后您可以使用热门点击汇总

尝试条款汇总
GET /my_index/my_type/_search
{
   "size": 0,
   "aggs": {
      "agg1": {
         "terms": {
            "field": "article_id"
         },
         "aggs": {
            "agg2": {
               "top_hits": {}
            }
         }
      }
   }
}

进一步澄清:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html