2017-09-09 1 views
0

JEST AggregationBuilders 또는 그 유사 물을 사용하여 FiltersAggregation 쿼리를 어떻게 만듭니 까? 나는 FiltersAggregationIntegrationTest 보았지만 쿼리 부분은 JSON에 의해 ​​직접적으로 정의되고필터 작성 방법 JEST 빌더를 사용하여 애그리 게이션 쿼리를 생성 하시겠습니까?

링크 FiltersAggregationIntegrationTest에 (I 예를 들어 표준 용어 집합이 사용하고 같은) 좀 더 AggregationBuilders 같은 뭔가가 필요 : 나는했습니다 https://github.com/searchbox-io/Jest/blob/master/jest/src/test/java/io/searchbox/core/search/aggregation/FiltersAggregationIntegrationTest.java

답변

0

하나의 가능성 :

FilterAggregationBuilder testFilter = AggregationBuilders.filter("test"); 
testFilter.filter(FilterBuilders.typeFilter("typeName")); 
new SearchSourceBuilder().aggregation(testFilter); 

이 필터는 유형별 필터이지만 FilterBuilders에도 termFilter가 있습니다.

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/17408357) – lebelinoz

0

여기에 해결책이 있습니다. Jest github 문제에도 크로스 게시했습니다.

QueryBuilder filterTermsQuery = QueryBuilders.termsQuery("fieldName", "value1", "value2", "value3"); 
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.searchSource() 
    .query(boolQueryBuilder) 
    .size(0) 
    .aggregation(
     AggregationBuilders 
      .filter("filterAggName") // returns FilterAggregationBuilder 
      .filter(filterTermsQuery)); 

요점은 당신이 농담 클라이언트에서 사용하는 검색 소스 빌더를 만들고합니다 (AggregationBuilders 방법에 하위 집계를 체인으로도 하위 집계를 포함 할 수있는)로 및 집계가를 제공 할 것입니다 . 그런 다음 필터 유형의 집계를 AggregationBuilders에서 사용할 수 있도록 정의하십시오. 그러면 필터 집계 유형으로 QueryBuilder를 제공 할 수있는 FilterAggregationBuilder의 새 빌더가 반환됩니다. 문서에 따르면 .filter(termsQuery) 호출은 필터와 일치하는 문서 만이 필터의 버켓으로 떨어지게합니다.

사용 사례를 잘못 이해하지 않았다면 문제가 해결되기를 바랍니다.

관련 문제