【问题标题】:Elasticsearch - aggregate over filtered dataElasticsearch - 聚合过滤数据
【发布时间】:2020-02-06 02:51:16
【问题描述】:

我有一个返回一组文档 (100) 的查询。在这些我想应用聚合,因为这些是最相关的。当我尝试聚合时,会返回所有结果的聚合,而不是前 100 个。

查询:

{
  "size": 100,
  "sort": [
   {
    "_score": {
    "order": "desc"
    }
   }
],
"from": 0,
"query": {
 .......
 },
  "aggregations": {
    "category.category_id": {
      "nested": {
        "path": "category"
       },
    "aggregations": {
     "category.category_id": {
       "terms": {
         "field": "category.category_id",
         "size": 2,
         "order": {
           "_count": "desc"
         }
       }
     }
   }
 }
}

结果:

{
"took": 33,
"timed_out": false,
"_shards": {
 "total": 4,
 "successful": 4,
 "skipped": 0,
 "failed": 0
},
"hits": {
 "total": 1042,
 "max_score": 60,
 "hits": [...100 hits...]
},
"aggregations": {
 "category.category_id": {
  "doc_count": 5186,
  "category.category_id": {
   "doc_count_error_upper_bound": 0,
   "sum_other_doc_count": 196,
   "buckets": [
   {
     "key": 2,
     "doc_count": 1042
   },
   {
    "key": 2764,
    "doc_count": 272
   }
   ....
   ]
  }
 }
}

预期:

{
"took": 33,
"timed_out": false,
"_shards": {
 "total": 4,
 "successful": 4,
 "skipped": 0,
 "failed": 0
},
"hits": {
 "total": 1042,
 "max_score": 60,
 "hits": [...100 hits...]
},
"aggregations": {
 "category.category_id": {
  "doc_count": 100,
  "category.category_id": {
   "doc_count_error_upper_bound": 0,
   "sum_other_doc_count": x,
   "buckets": [
   {
     "key": 2,
     "doc_count": x (x< 100) (eg 37)
   },
   {
    "key": 2764,
    "doc_count": y (y <= 100 -x) (eg 10)
   }
   ....
   ]
  }
 }
}

是否可以聚合过滤后的数据?或者我怎样才能汇总最相关的数据?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以使用 elasticsearch 文档中描述的过滤器聚合

    {
        "aggs" : {
            "agg_name" : {
                "filter" : { //Add your query },
                "aggs" : {
                   "terms": {
                           "field": "category.category_id",
                          "size": 2,
                        "order": {
                         "_count": "desc"
                          }
                }
            }
        }
    }
    

    如果您愿意,您可以在第二个 aggs 中再添加一个聚合

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 2015-09-17
      • 2014-02-02
      • 2019-03-03
      • 2015-03-31
      • 2018-01-30
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多