2016-05-30 95 views
2

我做了一些弹性搜索查询,如下所示,它运作良好。elasticsearch - 如何使java api中的桶过滤器

"aggregations" : { 
    "agg_sum" : { 
     "sum" : { 
     "field" : "cnt" 
     } 
    }, 
    "bucket_filter": { 
     "bucket_selector": { 
      "buckets_path": { 
       "totalSales": "agg_sum" 
      }, 
      "script": "totalSales >= 10" 
     } 
    } 
    } 

它需要转换为java api查询,但不知道如何转换“buckets_filter”。对此有何看法?

回答

1

BucketSelector中的Java API会是这样的:

Map<String, String> bucketsPathsMap = new HashMap<>(); 
     bucketsPathsMap.put("ags", "agg_sum"); 
     Script script = new Script("params.ags > 10"); 

    BucketSelectorPipelineAggregationBuilder bs = 
       PipelineAggregatorBuilders.bucketSelector("bucket_filter", bucketsPathsMap, script); 
AggregationBuilders.subAggregation(bs); 

这可能为时已晚,只为同一个问题的缘故。

+0

谢谢,我已经用其他方式做这个查询tho :) –

相关问题