如何在多个字段上执行聚合?

时间:2016-02-01 11:11:24

标签: elasticsearch

如何在多个字段上执行聚合?那就是我想在" field1"上列出术语聚合的结果。和" field2",不是单独的,而是在同一个桶中。在弹性搜索中是否可能?

3 个答案:

答案 0 :(得分:1)

截至目前,在Elasticsearch中没有直接的方法来进行多字段聚合。但您可以使用以下脚本实现所需的结果:

levels =

您可以在此blog

中详细了解上述情况

答案 1 :(得分:0)

如下所述使用sub-aggregation

{
"size" : 0,

"aggs": {
  "group_By_field1": {
     "terms": {
        "field": "field1"
     },
     "aggs" : {
       "group_By_Field2" : { 
            "terms": {
        "field": "field2"
     }
       }
     }
   }

 }
}

答案 2 :(得分:0)

这可以使用脚本完成,如下所示:

{
  "aggs": {
    "my_agg": {
      "terms": {
        "script": "doc['field_1'].values + doc['field_2'].values"
      }
    }
  }
}

注意:应将性能视为合并多个字段进行聚合需要付出代价。

阅读here