My Code:
[ElasticsearchType(Name="abc-orders")]
public class ebizOrders
{
public string buyflowsessionid { get; set; }
public string buyfloworderid { get; set; }
public string ordersubmissiontype { get; set; }
public string level1marketname { get; set; }
public int level1marketid { get; set; }
public DateTime createdate { get; set; }
public cls_Details details { get; set; }
}
public class cls_Details
{
public cls_ConsumerInfo ConsumerInfo { get; set; }
}
public class cls_ConsumerInfo
{
public string ConsumerType { get; set; }
}
var SearchResult = _connectionToEs.EsClient().Search(s => s
.Index(searchIndex)
.Type(searchDoc)
.Query(q => q
.Bool(b => b
.Must(mu => mu
.QueryString(qr => qr
.Query(queryString)
.DefaultField("*")
.AnalyzeWildcard(true)
)
)
)
)
.Aggregations(a => a
.DateRange("Order_Date_Ranges", date => date
.Field(p => p.createdate)
.Ranges(
r => r.From(fromDt).To(toDt),
r => r.From(fromDtPrev).To(toDtPrev),
r => r.From(fromDt1w).To(toDt1w),
r => r.From(fromDt2w).To(toDt2w)
)
.TimeZone("-04:00")
.Aggregations(childAggs => childAggs
.Terms("FullFillmentType", ff => ff.Field(p => p.ordersubmissiontype.Suffix("keyword"))
.Size(5)
.Aggregations(aa=>aa
.Terms("ConsumerType",ct=>ct.Field(p1=>p1.details.ConsumerInfo.ConsumerType.Suffix("Ctype"))
.Size(5)
.Aggregations(aa1 => aa1
.Cardinality("UniqueOrders", uo => uo.Field(f => f.buyfloworderid.Suffix("key")))
)
)
)
)
)
)
)
);
Json Format - This is the one I want to build in NEST.Net
{
"aggs": {
"2": {
"date_range": {
"field": "createdate",
"ranges": [{
"from": "now-3h-4h",
"to": "now-4h"
}]
},
"aggs": {
"5": {
"terms": {
"field": "ordersubmissiontype.keyword",
"size": 5,
"order": {
"1": "desc"
}
},
"aggs": {
"1": {
"cardinality": {
"field": "buyfloworderid.keyword"
}
},
"4": {
"terms": {
"field": "details.ConsumerInfo.ConsumerType.keyword",
"size": 5,
"order": {
"1": "desc"
}
},
"aggs": {
"1": {
"cardinality": {
"field": "buyfloworderid.keyword"
}
}
}
}
}
}
}
}
}
}