Solr 8.11.1版本如何统计查询结果中指定字段的数值总和
Solr 8.11.1 结果集数值字段求和实现方案
直接使用Solr内置的Stats统计组件即可实现需求,无需修改索引配置,在查询请求中追加对应参数就能拿到匹配结果集的字段总和,统计范围不受分页参数start、rows影响。
具体配置方法
在原有查询参数基础上追加以下参数:
- 开启统计组件:
stats=true - 指定需要做求和统计的数值字段,多个字段就重复声明该参数:
stats.field=total_amountA、stats.field=total_amountB
完整HTTP请求示例
GET /solr/你的核心名/select?q=*:*&start=0&rows=2&stats=true&stats.field=total_amountA&stats.field=total_amountB
你原有查询里的筛选条件(q、fq参数)保持不变即可,统计组件会自动基于所有命中筛选条件的文档计算数值。
返回结果说明
执行查询后,响应结果会在原有response节点外新增stats节点,结构如下:
{ "response": { "numFound": 2, "start": 0, "docs": [ {"total_amountA":10,"total_amountB":5,"id":"2"}, {"total_amountA":10,"total_amountB":5,"id":"1"} ] }, "stats": { "stats_fields": { "total_amountA": { "sum": 20.0, "min": 10.0, "max": 10.0, "count": 2, "mean": 10.0 }, "total_amountB": { "sum": 10.0, "min": 5.0, "max": 5.0, "count": 2, "mean": 5.0 } } } }
直接读取对应字段下的sum属性值,就能拿到你需要的统计结果:total_amountA总和为20,total_amountB总和为10。
注意事项
- 被统计字段必须是Solr中的数值类型(int、long、float、double等),字符串类型字段无法做数值求和计算。
- 如果使用SolrJ等客户端调用,直接调用客户端内置的stats相关API设置参数即可,不需要手动拼参数,核心逻辑和HTTP请求一致。
内容的提问来源于stack exchange,提问作者noah Park
相关产品推荐
相关产品推荐

