我想在Elasticsearch中查询按产品名称分组的销售总额。
我如何使用elastic4s实现这一目标?
client.execute {
search ("sales"/ "sales_type")
.query {rangeQuery("date") gte "01-01-2018" lte "31-12-2018" }
.aggs { termsAgg("s1","product_name")}
.aggs (sumAgg("sums","total_sum"))
}目前,我的代码只是在给定的日期范围内进行汇总,而不是按产品名称分组。
发布于 2019-06-02 12:54:43
无论如何,你可能已经找到了答案,但这是我的价值2p,对于任何其他人来说.您可能希望在product_name上使用子聚合,而不是在整个数据集中使用第二次聚合。
类似的内容(未经测试的代码,但基于我的一个项目的工作部分):
.query {rangeQuery("date") gte "01-01-2018" lte "31-12-2018" }
.aggs { termsAgg("s1","product_name").subAggregations(
sumAgg("sums","total_sum")
)
}结果是一堆嵌套的Map[String,Any],需要进行一些排序,但是一些日志/打印语句和一些尝试和错误为我解决了问题。
参考资料在这里:https://github.com/guardian/archivehunter/blob/47372d55d458cfe31e5d9809910cc5d9a4bbb9bf/app/controllers/SearchController.scala#L203,在这种情况下,我正在处理它,以便在浏览器前端使用ChartJS呈现。
很抱歉简短,但我现在正忙着呢,没多久可发了:)
https://stackoverflow.com/questions/51908862
复制相似问题