2014-05-12 3 views
3

내 문서에 탄성 검색 및 집계를 요청하고 있습니다. 내 집계는 특정 필드의 용어 집계입니다.탄성 검색으로 집계 스크롤

나는 모든 집계를 얻을 수 있기를 원하지만 요청은 오직 나에게 10 번째를 돌려 준다. 탄성 검색의 스크롤을 사용하려고 시도했지만 집계가 아니라 요청시 적용됩니다. 반환 된 문서는 잘 스크롤되지만 집계는 여전히 동일합니다.

누구에게도 동일한 문제가 있습니까? 그 이유는,

Terms terms = response.getAggregations().get("TermsAggr"); 
    Collection<Bucket> buckets = terms.getBuckets(); 

답변

5

집계 결과에 대한 기본 반환 크기가 10 개 항목입니다 : 여기

자바 내 요청입니다 :

SearchResponse response = client.prepareSearch("index").setTypes("type").setQuery(QueryBuilders.matchAllQuery()) 
       .addAggregation(AggregationBuilders.terms("TermsAggr").field("aggField")).execute().actionGet(); 

을 그리고 여기에 내가 버킷을 얻고 어떻게 당신은 오직 10 개의 결과 만 얻고 있습니다. 버킷의 값을 더 많이 또는 모두 반환하려면 AggregationBuilders 개체의 size을 더 큰 값으로 설정해야합니다.

SearchResponse response = client.prepareSearch("index") 
     .setTypes("type") 
     .setQuery(QueryBuilders.matchAllQuery()) 
     .addAggregation(AggregationBuilders.terms("TermsAggr") 
      .field("aggField").size(100)) 
     .execute().actionGet(); 

항상 모든 값을 반환하려는 경우 size(0)을 설정할 수 있습니다. 그러나 최근에 Issue 4837을 통해 릴리스에 추가되었으므로 ES 1.1로 업그레이드해야합니다.

+0

사실 나는 그 중 일부뿐만 아니라 모든 집계를 갖고 싶습니다. 크기에는 불가능합니다. BTW 나는 ES 1.0.1을 사용하고있다. – Blblblblblblbl

+0

이 입력란에는 몇 개의 항목이 있습니까? –

+0

프로덕션에서는 물론 성장하지만, 500000 개 항목을 기반으로 사용하고 있습니다. 여기에있는 문제는이 항목의 수가 늘어날 것이므로 크기 메서드를 사용할 수 없다는 것입니다. 매번 얼마나 많은 집계를 받아야하는지 모를 것입니다. – Blblblblblblbl