Solr 6 - 字段的SUM值以及GROUP BY

时间:2017-04-28 09:31:53

标签: solr facet solr6

我有一个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

我想要的是以下内容 -

  1. SUM来自不同salary的所有员工的department
  2. SUM来自不同salary的所有员工的bonusdepartment
  3. SUM来自不同salarydepartment的所有员工的group
  4. SUM来自不同salarybonus的所有员工的departmentgroup
  5. 示例数据 -

    <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 FACETSUM功能合并。

1 个答案:

答案 0 :(得分:3)

这应该有效,未经测试,可能会有一些拼写错误...

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)"
       }
    }
  }
}'