ElasticTranslateResult Translate(Expression e) { var evaluated = PartialEvaluator.Evaluate(e); var aggregated = FacetExpressionVisitor.Rebind(Mapping, SourceType, evaluated); if (aggregated.Collected.Count > 0) { CompleteFacetTranslation(aggregated); } else { CompleteHitTranslation(evaluated); } searchRequest.Query = QueryCriteriaRewriter.Compensate(searchRequest.Query); searchRequest.Filter = ConstantCriteriaFilterReducer.Reduce(searchRequest.Filter); ApplyTypeSelectionCriteria(); return(new ElasticTranslateResult(searchRequest, materializer)); }