我有基本的产品对象,其中包含ID,日期和销售数量。每种产品每天都有一个对象,并且该天的总销售额。我希望能够接受日期范围并在此日期之前返回最畅销的产品。
我试图获取某个日期范围内的销售总额,但将其按产品ID分组。这样我就可以在该日期范围内获得123、234,345等产品的总销售额,然后返回最畅销的10大产品。
这是我写的。响应似乎不正确,因为每个产品ID都有10个结果。每个产品ID仅应获得1个值,即总销售额。如果是SQL,我想获得按产品ID分组的销售总额。
var response = ElasticClient.Search<Product>(s => s
.Index(this.Index)
.Query(q => q
.DateRange(dr => dr
.Field(drf => drf.Date)
.GreaterThanOrEquals(startDate)
.LessThan(endDate)
)
)
.Aggregations(ag => ag
.Terms("productResults", pr => pr
.Field(prf => prf.ProductID)
.Size(10)
.Aggregations(prag => prag
.Sum("totalsales", sm => sm
.Field(f => f.TotalSales)
)
)
.Order( o => o.Descending("totalsales"))
)
)
);