当前位置: 首页 > 知识库问答 >
问题:

如何对多个字段执行聚合?

毛声
2023-03-14

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

共有3个答案

龚振
2023-03-14

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

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

注意:应将性能视为组合多个字段以进行聚合是有代价的。

阅读这里

东郭臻
2023-03-14

使用子聚合,如下所述:

{
"size" : 0,

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

 }
}
洪弘亮
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 我试图找到与当前正在查看的标签相关的标签。我们索引中的每个文档都被标记。每个标签由两部分组成-ID和文本名称: 要获取相关标签,我只是查询文档并获取其标签的集合: 这非常有效,我得到了想要的结果。但是,我需要标签ID 和 名称才能执行任何有用的操作。我已经探索了如何做到这一点,解决方案似乎是: 索引时合并字段 将字段拼凑在一起的脚本 嵌套聚合 选项1和2对我不可用,因此我一直在使用3,

  • 这工作得很完美,我得到了我想要的结果。但是,我需要标记ID和名称来做任何有用的事情。我已经探索了如何实现这一点,解决方案似乎是: 索引时合并字段 将字段集中在一起的脚本 嵌套聚合 选项一和选项二对我来说是不可用的,所以我一直在用3,但它没有以预期的方式做出反应。给定以下查询(仍在搜索还标记有“饼干”的文档): 我会得到这个结果: 嵌套聚合包括搜索项和我要搜索的标记(按字母顺序返回)。 我曾试图通过

  • 这个问题不是如何通过多个字段进行聚合,我们可以使用子聚合。 如果你知道SQL,我可以给你一个完美的解释: 我们能在Elasticsearch中实现这一点吗? 谢谢。

  • 本文向大家介绍使用MongoDB聚合按多个字段进行计数,包括了使用MongoDB聚合按多个字段进行计数的使用技巧和注意事项,需要的朋友参考一下 要按多个字段计数,请在MongoDB中使用$facet。在$facet处理在同一组输入文档的单级中的多个聚集的管道。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是要按多个字段计数的查询- 这将产

  • 我需要按9个文件分组,并在ElasticSearch中获得每个组的计数,原始代码使用“脚本”,性能很差,所以我需要优化它。我设法创建了一个新的字段并使用“copy_to”,但是当我与新的字段聚合时,我发现了一些问题。 我使用“src ip”和“dst ip”字段作为测试,copy_to字段是“agg condition”。下面是映射: 然后我给它添加一些数据 然后我看到kibana中的映射,它看起

  • 我有一个用例,其中我收到包含不同信息集的事件流,并希望对它们执行聚合。对于这些聚合中的每一个,都需要多个翻滚窗口,例如:每日,每周,每月,每年等。 聚合最初是所看到的计数的基本加法,但后来可能是对这些事件的一些分析/联接处理。因此,如果一个事件A每天来一次,另一个事件B每周来一次,结果将是这样的: 用例只是围绕翻滚的窗口而不是滑动窗口,我正在研究如何实现这个用例。主要问题是我不想等到窗口结束,而是