/// <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);
            }
        }