У меня есть базовый объект продукта, который содержит идентификатор, дату и количество продаж. Каждый продукт имеет один объект в день с общим объемом продаж за этот день. Я хочу иметь возможность принимать диапазон дат и возвращать самые продаваемые продукты между этими датами.
Я пытаюсь получить сумму продаж в диапазоне дат, но сгруппировать их по идентификатору продукта. Так что я могу получить общий объем продаж по продукту 123, 234,345 и т. Д. В пределах диапазона дат, а затем вернуть 10 самых продаваемых продуктов.
Это то, что я написал. Кажется, что ответ не правильный, так как каждый идентификатор продукта имеет 10 результатов. Я должен получить только 1 значение для идентификатора продукта, который является общим объемом продаж. Если бы это был SQL, я бы хотел получить сумму продаж, сгруппированную по идентификатору продукта.
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"))
)
)
);