/// <summary> /// Get Max Aggregation /// </summary> /// <param name="filter"></param> /// <param name="list"></param> /// <param name="agg_nickname"></param> private void ExecuteMaxAggregation(DTO.Aggregations filter, Dictionary <string, double> list, string agg_nickname) { var response = _EsClientDAL.Current.Search <DTO.Customer>(s => s .Aggregations(a => a .Max(agg_nickname, st => st .Field(filter.Field) ) ) ); list.Add(filter.Field + " Max", response.Aggs.Sum(agg_nickname).Value.Value); }
/// <summary> /// Running aggregations /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRunAgrr_Click(object sender, EventArgs e) { try { //TODO: validation (eg: Sum is not applicable to 'name' field) DTO.Aggregations aggFilter = new DTO.Aggregations(); aggFilter.Field = cboQryField.Text; aggFilter.AggregationType = cboQryAggrType.Text; FillAggregationListView(_customerBll.GetAggregations(aggFilter), lvwHits4); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
/// <summary> /// Getting basic aggregations /// </summary> /// <param name="filter"></param> /// <returns></returns> public Dictionary <string, double> GetAggregations(DTO.Aggregations filter) { Dictionary <string, double> list = new Dictionary <string, double>(); string agg_nickname = "customer_agg"; switch (filter.AggregationType) { case "Count": { ExecuteCountAggregation(filter, list, agg_nickname); break; } case "Avg": { ExecuteAvgAggregation(filter, list, agg_nickname); break; } case "Sum": { ExecuteSumAggregation(filter, list, agg_nickname); break; } case "Min": { ExecuteMinAggregation(filter, list, agg_nickname); break; } case "Max": { ExecuteMaxAggregation(filter, list, agg_nickname); break; } default: break; } return(list); }
/// <summary> /// Get Count Aggregation /// </summary> /// <param name="filter"></param> /// <param name="list"></param> /// <param name="agg_nickname"></param> private void ExecuteCountAggregation(DTO.Aggregations filter, Dictionary <string, double> list, string agg_nickname) { var response = _EsClientDAL.Current.Search <DTO.Customer>(s => s .Aggregations(a => a .Terms(agg_nickname, st => st .Field(filter.Field) .Size(int.MaxValue) .ExecutionHint(TermsAggregationExecutionHint.GlobalOrdinals) ) ) ); foreach (var item in response.Aggs.Terms(agg_nickname).Items) { list.Add(item.Key, item.DocCount); } }