SearchResponse에서 Elasticsearch Java API로 집계에 액세스하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/21018493

  •  21-12-2019
  •  | 
  •  

문제

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)는 여전히 베타 버전이며,이 기능을 여전히 추가해야하지만 해당 지점에 대한 정보를 찾지 못했습니다.

도움이 되었습니까?

해결책

GitHub의 ES 소스 에서는 다음과 같은 테스트에서 다음을 참조하십시오.

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));
.

다른 팁

실제 문서에 액세스하는 것에 대한 궁금해하는 사람은 코드 다음 코드가 도움이 될 수 있습니다.

Terms  terms = response.getAggregations().get("agg1");
Collection<Terms.Bucket> buckets = terms.getBuckets();
for (Bucket bucket : buckets) {
    System.out.println(bucket.getKeyAsText() +" ("+bucket.getDocCount()+")");
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top