如何使用子文档中的最小值在父级上构建范围聚合

时间:2015-07-24 14:18:35

标签: elasticsearch

我在ProductPricing文档之间创建了父/子关系。 Product有很多Pricing,每个都有自己的subtotal字段,我只想创建一个范围聚合,只考虑每个的最小小计产品并过滤掉其他产品。

我认为这可以使用嵌套聚合和过滤器,但这是我最接近的:

 POST /test_index/Product/_search
 {
   "aggs": {
     "offered-at": {
       "children": {
         "type": "Pricing"
       },
       "aggs": {
         "prices": {
           "aggs": {
             "min_price": {
               "min": {
                 "field": "subtotal"
               },
               "aggs": {
                 "min_price_buckets": {
                   "range": {
                     "field": "subtotal",
                     "ranges": [
                       {
                         "to": 100
                       },
                       {
                         "from": 100,
                         "to": 200
                       },
                       {
                         "from": 200
                       }
                     ]
                   }
                 }
               }
             }
           }
         }
       }
     }
   }
 }

然而,这会导致错误nested: AggregationInitializationException[Aggregator [min_price] of type [min] cannot accept sub-aggregations]; }],这是有道理的,因为一旦减少到单个值,就没有任何东西可以聚合。

但是我如何构建它以使范围聚合仅从每组子项中拉出最小值?

(这是一种带映射和测试数据的意义:http://sense.qbox.io/gist/01b072b4566ef6885113dc94a796f3bdc56f19a9

0 个答案:

没有答案