Exemplo n.º 1
0
 /// <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));
 }
Exemplo n.º 2
0
        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);
        }