如何在 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 和 Kibana 中的文本字段可聚合?