2017-05-04 73 views
0

我有其中父对象具有嵌套对象数组像下面弹性搜索 - 聚合

"properties": { 
    "id": { 
     "type": "integer" 
    }, 
    "schoolProgramAttribute": { 
     "type": "nested", 
     "properties": { 
      "disciplineId": { 
       "type": "integer" 
      }, 
      "programId": { 
       "type": "integer" 
      } 
     } 
    } 
} 

现在基本上特定disciplineId可以重复多次嵌套阵列中的场景。需求是计算每个学科ID的所有父对象。如果我只是通过disciplineIds分组,我没有得到正确的计数,我不知道如何反向聚合可以提供帮助。当我们尝试使用父母身份进行反向聚合时,我总是得到1的数量,而且我不确定我是否正确地使用了正确的方式。

在SQL世界中,像

select count(distinct id),DisciplineId from table group by disciplineid 

任何帮助,将不胜感激。

+0

您可以添加聚合工作吗? – jordivador

回答

0

首先,你应该通过disciplineId申请嵌套terms聚集和里面你应该添加reverse_nested

{ 
    "aggs": { 
     "nested": { 
      "nested": { 
       "path": "schoolProrgamAttribute" 
      }, 
      "aggs": { 
       "discipline": { 
        "terms": { 
         "field": "schoolProrgamAttribute.disciplineId" 
        }, 
        "aggs": { 
         "parent": { 
          "reverse_nested": {} 
         } 
        } 
       } 
      } 
     } 
    } 
} 

discipline聚集的结果会给你每个disciplineId条目数(并且不排除里面重复父母)而parent将给出所需的值 - 每个父母的数量disciplineId

+0

当然会试试。谢谢 –