2014-09-26 55 views
0

最大聚集的結果,我對數字字段中elasticsearch做了最大的聚集如下:訪問在elasticsearch

SearchResponse sr = client 
       .prepareSearch("test") 
       .setTypes("test") 
       .setQuery(QueryBuilders.matchAllQuery()) 
       .addAggregation(
         AggregationBuilders.max("id").field(
           "id")).execute().actionGet(); 

如何訪問Max.value等於在Java回來了?我只能看到一個僅用於術語聚合的例子。請幫我解決一下這個。謝謝。

回答

1

嘗試下面的代碼,

import org.elasticsearch.search.aggregations.metrics.max.Max; 
import org.elasticsearch.search.aggregations.Aggregation; 

//process ES Response, it will iterate only once though 
// sr = searchResponse 
for (Aggregation maxAggs : sr.getAggregations()) { 
       Max max = (Max) maxAggs; 
       double maxValue = max.getValue(); 
       System.out.println("maxValue => " + maxValue); 
} 
+0

獲取有關JSONPath更多的信息,我希望會有一些有效的方式來檢索沒有循環的結果。非常感謝您的答覆,請使用這個。 – 2014-09-26 11:19:08

+0

@RabiyaAshruff我一直在使用相同的api大約一年:) – prayagupd 2014-09-26 11:34:23

0

您可以使用JsonPath直接獲得總計值。先加JsonPath行家依賴於你的項目:

<dependency> 
    <groupId>com.jayway.jsonpath</groupId> 
    <artifactId>json-path</artifactId> 
    <version>0.9.1</version> 
</dependency> 

然後用下面的代碼將返回字符串:

JsonPath.read(sr.toString(), "$.aggregations.id.value") 

你可以從here

+0

也會試試這個。萬分感謝!! :) – 2014-09-26 11:24:06