我已将以下文档编入索引
{
"category" : "student",
"name" : "John",
"state" : "Florida",
"grade": "A"
}
我需要做的是在“州”和“等级”字段上进行双层聚合。也就是说,基本上我想知道每个州的等级分布。因此,执行此操作的常规方法是在字段“state”上应用聚合,并在字段“grade”上的该聚合内嵌套一个。但我可以一步完成同样的事情吗?
答案 0 :(得分:1)
你是什么意思:
'但我可以一步完成同样的事情吗?'
以下请求将为每个州创建一个存储桶,然后为每个州的每个等级创建一个存储桶。您将在一个请求中获得每个州的成绩分配
{
"query": {},
"aggs": {
"grouped_by_state": {
"terms": {
"field": "state"
},
"aggs": {
"grades_distribution": {
"terms": {
"field": "grade"
}
}
}
}
}
}
答案 1 :(得分:0)
我们可以使用脚本支持来实现这一点 -
{
"aggs": {
"terms": {
"terms": {
"script" : "doc['state'].value + doc['grade'].value"
}
}
}
}
这里我们附加这些字段的值来得到两者的排列。