Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

다음과 같은 다양한 집계처리 선언이 가능합니다.

집계 연산 정의

Code Block
themeEmacs
//Paging
var searchDes = new SearchDescriptor<SearchGoods>()
    .From(page)
    .Size(limit);

// Filter기능은 3장 참고        
        
//Aggregations(검색 결과 집계 처리)
searchDes.Aggregations(aggs => aggs
        .Average("average_per_price", avg => avg.Field(p => p.price))
        .Max("max_per_price", avg => avg.Field(p => p.price))
        .Min("min_per_price", avg => avg.Field(p => p.price))
        .Terms("category1_cnt", st => st
            .Field(p => p.category1.Suffix("keyword"))
            .MinimumDocumentCount(1)
            .Size(100000)
            .ShardSize(100)
            .ExecutionHint(TermsAggregationExecutionHint.Map)
            .Missing("na")
            .Order(o => o
                .KeyAscending()
                .CountDescending()
            )
            .Meta(m => m
                .Add("foo", "bar")
            )
        )
        .Terms("category2_cnt", st => st
            .Field(p => p.category2.Suffix("keyword"))
            .MinimumDocumentCount(1)
            .Size(100000)
            .ShardSize(100)
            .ExecutionHint(TermsAggregationExecutionHint.Map)
            .Missing("na")
            .Order(o => o
                .KeyAscending()
                .CountDescending()
            )
            .Meta(m => m
                .Add("foo", "bar")
            )
        )
        .Terms("tag_cnt", st => st
            .Field(p => p.tags.Suffix("keyword"))
            .MinimumDocumentCount(1)
            .Size(100000)
            .ShardSize(100)
            .ExecutionHint(TermsAggregationExecutionHint.Map)
            .Missing("na")
            .Order(o => o
                .KeyAscending()
                .CountDescending()
            )
            .Meta(m => m
                .Add("foo", "bar")
            )
        )
);
  • 최소 최대가격 범위 : 검색 결과가 가진 가격범위 스크롤바에 활용됩니다.
  • 카테고리별 집계 : 카테고리 결과내 재검색에서 사용되며, 카테고리로 범위를 축소할때 사용됩니다.
  • 태그 나열 : 검색에의해 나열된 연관 태그를 나열해줌으로, 태그를 통한 컬렉션 점프를 할수 있습니다.


집계 연산 사용

Code Block
themeEmacs
var agg = engine_result.Aggregations;
var category1_aggs = agg.Terms("category1_cnt");
var category2_aggs = agg.Terms("category2_cnt");
var tag_aggs = agg.Terms("tag_cnt");
var minPrice = agg.ValueCount("min_per_price").Value

...