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

Jus*_*tin 4 aggregation elasticsearch

我的文件看起来像这样:

{  
    "clientId": "FPIev_86RwB",
    "viewId": "FPIewF1aRyU",
    "sessionId": "FPIewE16Rxu",
    "trackingId": "FPIewHfaRx9",
    "type": "view",
    "intVal": [  
        21,
        72,
        37
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

{
    "size": 0,
    "aggs": {
        "avg_1": {
            "avg": {
                "field": "intVal.1"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*tin 5

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

{
    "size": 0,
    "aggs": {
        "avg_1": {
            "avg": {
                "script": "doc['intVal'][1].value"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)