我有一个 Solr 核心,其中包含以下 6 个字段的文档 -
FIELDNAME TYPE INDEXED STORED
department STRING TRUE TRUE
group STRING TRUE TRUE
age INT TRUE TRUE
salary INT TRUE TRUE
bonus INT TRUE TRUE
我想要的是以下 -
SUM
来自不同部门
的所有员工的薪资
。SUM
来自不同部门
的所有员工的工资
和奖金
。SUM
来自不同部门
和组
的所有员工的薪资
。SUM
来自不同部门
和组
的所有员工的工资
和奖金
>.
示例数据 -
<doc>
<str name="department">IT</str>
<str name="group">INFRASTRUCTURE</str>
<int name="age">27</int>
<int name="salary">1000</int>
<int name="bonus">10</int>
</doc>
<doc>
<str name="department">IT</str>
<str name="group">DEVELOPMENT</str>
<int name="age">30</int>
<int name="salary">10000</int>
<int name="bonus">100</int>
</doc>
<doc>
<str name="department">IT</str>
<str name="group">DEVOPS</str>
<int name="age">32</int>
<int name="salary">2000</int>
<int name="bonus">150</int>
</doc>
<doc>
<str name="department">IT</str>
<str name="group">INFRASTRUCTURE</str>
<int name="age">35</int>
<int name="salary">20000</int>
<int name="bonus">200</int>
</doc>
<doc>
<str name="department">HR</str>
<str name="group">PEOPLE</str>
<int name="age">27</int>
<int name="salary">900</int>
<int name="bonus">5</int>
</doc>
异常输出 -
1. For the 1st requirement -
IT - 33000
HR - 900
2. For the 2nd requirement -
IT - 33460
HR - 905
3. For the 3rd requirement -
IT -
INFRASTRUCTURE - 21000
DEVELOPMENT - 10000
DEVOPS - 2000
HR -
PEOPLE - 900
4. For the 4th requirement -
IT -
INFRASTRUCTURE - 21210
DEVELOPMENT - 10100
DEVOPS - 2150
HR -
PEOPLE - 905
我尝试按照指示 here 来实现它但是,我无法将 PIVOT FACET
与 SUM
函数合并。
最佳答案
这应该可以工作,未经测试,可能有一些拼写错误等......
curl http://localhost:8983/solr/col/query -d '
q=*:*&
json.facet={
departments:{
type : terms,
field : department,
facet:{
sumsalary : "sum(salary)",
sumbonus : "sum(bonus)",
groups:{
type : terms,
field : group,
facet:{
sumsalaryg : "sum(salary)",
sumbonusg : "sum(bonus)"
}
}
}
}'
关于Solr 6 - 字段的 SUM 值以及 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676814/