public static ITypeSearch <TSource> TermsFacetFor <TSource>(this ITypeSearch <TSource> search, string name, Type type, Filter filter, Action <FacetFilterRequest> facetRequestAction = null, int size = 50) { var fieldName = name; if (type != null) { fieldName = search.Client.GetFullFieldName(name, type); } return(new Search <TSource, IQuery>(search, context => { var facetRequest = new TermsFacetFilterRequest(name, filter) { Field = fieldName, Size = size }; if (facetRequestAction.IsNotNull()) { facetRequestAction(facetRequest); } context.RequestBody.Facets.Add(facetRequest); })); }
public static ITypeSearch <TSource> TermsFacetFor <TSource>( this ITypeSearch <TSource> search, Expression <Func <TSource, string> > fieldSelector, Expression <Func <TSource, Filter> > filterExpression, Action <TermsFacetFilterRequest> facetRequestAction = null) { filterExpression.ValidateNotNullArgument("filterExpression"); var filterExpressionParser = new FilterExpressionParser(search.Client.Conventions); var facetFilter = filterExpressionParser.GetFilter(filterExpression); var facetName = fieldSelector.GetFieldPath(); var fieldName = search.Client.Conventions.FieldNameConvention.GetFieldName(fieldSelector); return(new Search <TSource, IQuery>(search, context => { var facetRequest = new TermsFacetFilterRequest(facetName, facetFilter) { Field = fieldName }; if (facetRequestAction.IsNotNull()) { facetRequestAction(facetRequest); } context.RequestBody.Facets.Add(facetRequest); })); }