如何获取按类型分隔的聚合?

时间:2016-04-21 07:24:25

标签: elasticsearch

我有一个索引“my_index”和2种类型“color1”和“color2”。两种类型中的每个文档都有一个字段“颜色”。

对“color”和整个索引进行聚合我会得到这样的结果:

[{ "key": "red", "doc_count": 10},  
{ "key": "blue", "doc_count": 9},  
{ "key": "green", "doc_count": 8}]  

没有2个查询就可以得到类似的东西:

[{ "key": "color1.red", "doc_count": 7},  
{ "key": "color1.blue", "doc_count": 6},  
{ "key": "color1.green", "doc_count": 5},
{ "key": "color2.red", "doc_count": 3},  
{ "key": "color2.blue", "doc_count": 3},  
{ "key": "color2.green", "doc_count": 3}] 

或:

{"color1":    
[{ "key": "red", "doc_count": 7},  
{ "key": "blue", "doc_count": 6},  
{ "key": "green", "doc_count": 5}],
"color2":    
[{ "key": "red", "doc_count": 3},  
{ "key": "blue", "doc_count": 3},  
{ "key": "green", "doc_count": 3}]}

1 个答案:

答案 0 :(得分:1)

有可能:

{
  "size": 0,
  "aggs": {
    "by_type": {
      "terms": {
        "field": "_type",
        "size": 10
      },
      "aggs": {
        "by_color": {
          "terms": {
            "field": "color",
            "size": 10
          }
        }
      }
    }
  }
}