2016-05-30 77 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 :) –