使用elastic4s的Elasticsearch聚合组
Elasticsearch aggregation group by using elastic4s
我想在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"))
}
目前我的代码只是总结给定日期范围内的所有内容,而不是按产品名称分组
你现在可能已经找到了答案,但这是我给遇到这个问题的其他人的 2p 价值....你可能想在 product_name
上使用 sub-aggregation 而不是而不是对整个数据集进行第二次聚合。
类似这样的东西(未经测试的代码,但基于我的一个项目的工作部分):
.query {rangeQuery("date") gte "01-01-2018" lte "31-12-2018" }
.aggs { termsAgg("s1","product_name").subAggregations(
sumAgg("sums","total_sum")
)
}
返回的结果是一堆嵌套的 Map[String,Any]
,这需要一些整理,但是一些 logging/print 语句和一些反复试验为我整理出来了。
参考在这里:https://github.com/guardian/archivehunter/blob/47372d55d458cfe31e5d9809910cc5d9a4bbb9bf/app/controllers/SearchController.scala#L203,在这种情况下,我正在处理它以便使用 ChartJS 在浏览器前端中呈现。
抱歉为简洁起见,但我现在正忙着赶路 post :)
我想在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"))
}
目前我的代码只是总结给定日期范围内的所有内容,而不是按产品名称分组
你现在可能已经找到了答案,但这是我给遇到这个问题的其他人的 2p 价值....你可能想在 product_name
上使用 sub-aggregation 而不是而不是对整个数据集进行第二次聚合。
类似这样的东西(未经测试的代码,但基于我的一个项目的工作部分):
.query {rangeQuery("date") gte "01-01-2018" lte "31-12-2018" }
.aggs { termsAgg("s1","product_name").subAggregations(
sumAgg("sums","total_sum")
)
}
返回的结果是一堆嵌套的 Map[String,Any]
,这需要一些整理,但是一些 logging/print 语句和一些反复试验为我整理出来了。
参考在这里:https://github.com/guardian/archivehunter/blob/47372d55d458cfe31e5d9809910cc5d9a4bbb9bf/app/controllers/SearchController.scala#L203,在这种情况下,我正在处理它以便使用 ChartJS 在浏览器前端中呈现。
抱歉为简洁起见,但我现在正忙着赶路 post :)