我正在对elasticsearch中的数字字段进行最大聚合,如下所示:
SearchResponse sr = client
.prepareSearch("test")
.setTypes("test")
.setQuery(QueryBuilders.matchAllQuery())
.addAggregation(
AggregationBuilders.max("id").field(
"id")).execute().actionGet();
如何访问java中返回的max.value?我只能看到一个例子聚合的例子。请帮我解决一下这个。感谢。
答案 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的更多信息