/// <summary> /// Tra cứu từ khóa tính tổng tiền, tiền trung bình trong 1 ngày, tổng click, view, trung bình click,view /// </summary> /// <param name="tu_khoa"></param> /// <param name="kieu_doi_sanh"></param> /// <param name="date_start"></param> /// <param name="date_end"></param> public Dictionary <string, double> TraCuuTuKhoa(string tu_khoa, KieuDoiSanh kieu_doi_sanh, long date_start, long date_end) { return(TraCuuTuKhoaV2(tu_khoa, new List <string>() { "ext.s.c", "ext.c.c" }, kieu_doi_sanh, date_start, date_end)); }
public Dictionary <string, double> TraCuuTuKhoaV2(string tu_khoa, List <string> fields, KieuDoiSanh kieu_doi_sanh, long date_start, long date_end) { Dictionary <string, double> data_sum = new Dictionary <string, double>(); List <QueryContainer> must = new List <QueryContainer>(); if (!string.IsNullOrEmpty(tu_khoa)) { switch (kieu_doi_sanh) { case KieuDoiSanh.DOI_SANH_RONG: must.Add(new QueryStringQuery { Fields = "prox.xkj", Query = tu_khoa }); break; case KieuDoiSanh.KHOP_CHINH_XAC: must.Add(new TermQuery { Field = "prox.xkj.keyword", Value = tu_khoa }); break; case KieuDoiSanh.KHOP_CUM_TU: tu_khoa = $"\"{tu_khoa}\""; must.Add(new QueryStringQuery { Fields = "prox.xkj", Query = tu_khoa }); break; } } if (date_start > 0) { must.Add(new LongRangeQuery() { Field = "d", GreaterThanOrEqualTo = date_start }); } if (date_end > 0) { must.Add(new LongRangeQuery() { Field = "d", LessThanOrEqualTo = date_end }); } var qc = new QueryContainer( new BoolQuery() { Must = must } ); Dictionary <string, AggregationContainer> aggs = new Dictionary <string, AggregationContainer>(); foreach (var field in fields) { aggs.Add("agg_avg_" + field, new AggregationContainer { Average = new AverageAggregation("avg_" + field, field) }); aggs.Add("agg_sum_" + field, new AggregationContainer { Sum = new SumAggregation("sum_" + field, field) }); } var res_joboko = client.Search <dynamic>(x => x.Size(0) .Aggregations(o => o.Filter("f_joboko", c => c.Filter(u => u.Bool(n => n.Must(qc)) && u.Term(cc => cc.Field("ai") .Value("joboko"))) .Aggregations(aggs)) ) ); var res_xmads = client.Search <dynamic>(x => x.Size(0) .Aggregations(o => o.Filter("f_xmads", c => c.Filter(u => u.Bool(n => n.Must(qc)) && u.Term(oo => oo.Field("ai") .Value("xmads"))) .Aggregations(aggs)))); var filterAgg_joboko = res_joboko.Aggregations.Filter("f_joboko"); var filterAgg_xmads = res_xmads.Aggregations.Filter("f_xmads"); foreach (var field in fields) { data_sum.Add("sum_joboko_" + field, Convert.ToDouble(filterAgg_joboko.Sum("agg_sum_" + field)?.Value)); data_sum.Add("avg_joboko_" + field, Convert.ToDouble(filterAgg_joboko.Average("agg_avg_" + field)?.Value)); data_sum.Add("sum_xmads_" + field, Convert.ToDouble(filterAgg_xmads.Sum("agg_sum_" + field)?.Value)); data_sum.Add("avg_xmads_" + field, Convert.ToDouble(filterAgg_xmads.Average("agg_avg_" + field)?.Value)); } return(data_sum); }