访问elasticsearch中的max聚合结果

时间:2014-09-26 10:09:18

标签: java elasticsearch

我正在对elasticsearch中的数字字段进行最大聚合,如下所示:

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

如何访问java中返回的max.value?我只能看到一个例子聚合的例子。请帮我解决一下这个。感谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以使用JsonPath直接获取聚合值。首先在项目中添加JsonPath maven依赖项:

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

然后使用下面的代码返回String:

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

您可以从here

获取有关JSONPath的更多信息