【问题标题】:How can I perform an aggregation on multiple fields?如何对多个字段执行聚合?
【发布时间】:2016-02-02 06:49:19
【问题描述】:

如何对多个字段执行聚合?也就是说,我想列出“field1”和“field2”上的术语聚合结果,而不是单独列出,而是在同一个存储桶中。在elasticsearch中可以吗?

【问题讨论】:

  • 尝试使用嵌套聚合

标签: elasticsearch


【解决方案1】:

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

{  
    "aggs": {    
        "mixed_aggs": {      
            "terms": {        
                "script": "doc['field1'].values + doc['field2'].values"      
            }    
        }  
    }
}

您可以在blog 中阅读有关上述案例的更多信息

【讨论】:

    【解决方案2】:

    如下所述使用sub-aggregation

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

    【讨论】:

    • bur 这可以扩展到任何场景吗?
    • 场景是什么?
    【解决方案3】:

    这可以使用如下脚本来完成:

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

    注意:性能应该被认为是组合多个字段进行聚合是有代价的。

    阅读here

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 2014-01-12
      • 2020-12-07
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多