Esempio n. 1
0
        private Aggragtion[] MaxAggregation <T>(string field, SearchFilter[] filters = null, string indexName = "")
            where T : class
        {
            indexName = CurrentIndexName(indexName);

            var request = new SearchRequest <T>
            {
                Size         = 0,
                Aggregations = new MaxAggregation("agg_" + field, field)
            };

            AppendFilters <T>(request, filters);
            var result    = _client.Search <T>(request);
            var aggHelper = result.Aggs.Average("agg_" + field);

            List <Aggragtion> ret = new List <Aggragtion>();

            var aggregation = new Aggragtion()
            {
                Field   = field,
                Result  = aggHelper.Value != null ? (double)aggHelper.Value : 0,
                Element = new Dictionary <string, object>()
            };

            aggregation.Element.Add(field, aggHelper.Value);
            ret.Add(aggregation);

            return(ret.ToArray());
        }
Esempio n. 2
0
        private Aggragtion[] CountAggregation <T>(string field, SearchFilter[] filters = null, string indexName = "")
            where T : class
        {
            indexName = CurrentIndexName(indexName);

            var request = new SearchRequest <T>
            {
                Size         = 0,
                Aggregations = new TermsAggregation("agg_" + field)
                {
                    Field = field, Size = 1000
                }
            };

            AppendFilters <T>(request, filters);
            var result    = _client.Search <T>(request);
            var aggHelper = result.Aggs.Terms("agg_" + field);

            List <Aggragtion> ret = new List <Aggragtion>();

            foreach (var bucket in aggHelper.Buckets)
            {
                var aggregation = new Aggragtion()
                {
                    Field   = field,
                    Result  = bucket.DocCount != null ? (long)bucket.DocCount : 0,
                    Element = new Dictionary <string, object>()
                };
                aggregation.Element.Add(field, bucket.Key);
                ret.Add(aggregation);
            }
            return(ret.ToArray());
        }