2014-09-26 58 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