如何在SearchResponse中使用elasticSearch java api访问聚合?

有没有办法通过java API检索搜索响应中的聚合桶?

{
  "took" : 185,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 200,
    "max_score" : 1.0,
    "hits" : [...]
  },
  "aggregations" : {
    "agg1" : {
      "buckets" : [...]
    },
    "agg2" : {
      "buckets" : [...]
    }
  }
}

目前,可以得到聚合,但是我无法弄清楚如何获取这些存储区。

当前1.0版本的ElasticSearch(v1.0.0.Beta2)仍然是一个测试版,也许这个功能还需要添加,但是也没有找到这个方面的信息。

看看ES source on Github我在他们的测试中看到如下:

SearchResponse response = client().prepareSearch("idx").setTypes("type")
                .setQuery(matchAllQuery())
                .addAggregation(terms("keys").field("key").size(3).order(Terms.Order.count(false)))
                .execute().actionGet();

Terms  terms = response.getAggregations().get("keys");
Collection<Terms.Bucket> buckets = terms.getBuckets();
assertThat(buckets.size(), equalTo(3));
http://stackoverflow.com/questions/21018493/how-to-access-aggregations-result-with-elasticsearch-java-api-in-searchresponse

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何在SearchResponse中使用elasticSearch java api访问聚合?