如何在 Elasticsearch 中聚合数组字段的一个索引

Posted

技术标签:

【中文标题】如何在 Elasticsearch 中聚合数组字段的一个索引【英文标题】:How to aggregate one index of an array field in Elasticsearch 【发布时间】:2015-11-05 02:49:33 【问题描述】:

我的文档如下所示:

  
    "clientId": "FPIev_86RwB",
    "viewId": "FPIewF1aRyU",
    "sessionId": "FPIewE16Rxu",
    "trackingId": "FPIewHfaRx9",
    "type": "view",
    "intVal": [  
        21,
        72,
        37
    ]

我想在一组文档中仅对数组的一个索引进行不同的聚合(例如 sum 或 avg)。但是,似乎我无法像在对象上指定字段那样指定索引。这是我尝试过的:


    "size": 0,
    "aggs": 
        "avg_1": 
            "avg": 
                "field": "intVal.1"
            
        
    

如您所见,我尝试使用intVal.1 选择字段的索引,但这不起作用。我有可变数量的值可以添加到数组中,但是特定索引位置中的值都是相同的,所以我想对数组索引进行聚合。有什么办法可以完成这项工作吗?

【问题讨论】:

【参考方案1】:

我找到了一个使用脚本的解决方案。查询如下所示:


    "size": 0,
    "aggs": 
        "avg_1": 
            "avg": 
                "script": "doc['intVal'][1].value"
            
        
    

【讨论】:

以上是关于如何在 Elasticsearch 中聚合数组字段的一个索引的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch - 如何在聚合查询中显示附加字段名称

如何获得具有多个字段的 Elasticsearch 聚合

Elasticsearch:如何使 Elasticsearch 和 Kibana 中的文本字段可聚合?

Elasticsearch:如何使 Elasticsearch 和 Kibana 中的文本字段可聚合?

Elasticsearch 聚合功能

如何通过Elasticsearch 6.x中的动态或未知字段进行聚合