elasticsearch 嵌套对象聚合(使用Kibana)
我们得到了一个Elasticsearch索引,其中包含一个包含称为设备的任意嵌套对象子集的文档。每个设备都有一个键调用“aw”。 我试图做到的是,获得每种设备类型的elasticsearch 嵌套对象聚合(使用Kibana),elasticsearch,kibana,kibana-4,elasticsearch,Kibana,Kibana 4,我们得到了一个Elasticsearch索引,其中包含一个包含称为设备的任意嵌套对象子集的文档。每个设备都有一个键调用“aw”。 我试图做到的是,获得每种设备类型的aw键的平均值。 当尝试聚合和可视化此平均值时,我没有得到每种设备类型的aw的平均值,而是包含特定设备的文档中所有设备的平均值 因此,Elasticsearch/Kibana不是获取device.id=7的所有文档,而是将aw聚合到每个device.id,而是获取包含device.id=7的所有文档,然后使用文档中的所有设备构建平均值
aw
键的平均值。
当尝试聚合和可视化此平均值时,我没有得到每种设备类型的aw
的平均值,而是包含特定设备的文档中所有设备的平均值
因此,Elasticsearch/Kibana不是获取device.id=7
的所有文档,而是将aw
聚合到每个device.id
,而是获取包含device.id=7
的所有文档,然后使用文档中的所有设备构建平均值
Out索引映射如下所示(仅重要部分):
Kibana生成以下查询:
{
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"analyze_wildcard": true,
"query": "*"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"cycle.t": {
"gte": 1290760324744,
"lte": 1448526724744,
"format": "epoch_millis"
}
}
}
],
"must_not": []
}
}
}
},
"aggs": {
"2": {
"terms": {
"field": "devices.name",
"size": 35,
"order": {
"1": "desc"
}
},
"aggs": {
"1": {
"avg": {
"field": "devices.aw"
}
}
}
}
}
}
有没有一种方法可以在设备级别聚合平均值aw
,或者我做错了什么?我建议添加,将所有内容保留为aw:7
定义当前文档中所有文档的单个bucket
设置与指定筛选器匹配的上下文。通常,这将用于
将当前聚合上下文缩小到一组特定的
文件
Kibana不支持嵌套json Kibana还不支持嵌套聚合。 我也遇到了同样的问题,并通过用户从src构建kibana解决了这个问题。[分支机构:嵌套聚合] 请参阅从源代码构建kibana的说明 现在运行kibana构建之后,它将在桶和度量的高级选项中包含一个嵌套路径文本框和一个反向嵌套复选框
下面是lines.category_1、lines.category_2、lines.category_3和嵌套类型的行上的嵌套术语聚合示例。使用上面的三个bucket,:这意味着,为了检索和可视化所有设备,我需要对每个设备进行查询。id-正确吗?@Exinferis也许你可以在
device.id
上进行术语聚合,并将其与过滤器agg结合起来?嘿,ygogia,那些github页面404现在,你有机会更新吗?
{
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"analyze_wildcard": true,
"query": "*"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"cycle.t": {
"gte": 1290760324744,
"lte": 1448526724744,
"format": "epoch_millis"
}
}
}
],
"must_not": []
}
}
}
},
"aggs": {
"2": {
"terms": {
"field": "devices.name",
"size": 35,
"order": {
"1": "desc"
}
},
"aggs": {
"1": {
"avg": {
"field": "devices.aw"
}
}
}
}
}
}