【发布时间】:2016-02-29 06:21:20
【问题描述】:
我们获得了一个 Elasticsearch 索引,其中包含带有称为设备的任意嵌套对象子集的文档。这些设备中的每一个都有一个关键调用“aw”。
我试图完成的是为每种设备类型获取aw 密钥的平均值。
在尝试聚合和可视化这个平均值时,我没有得到每个设备类型的 aw 的平均值,而是包含特定设备的文档中的所有设备的平均值。
因此,Elasticsearch / Kibana 不是获取所有包含 device.id=7 的文档并聚合 awper device.id,而是获取包含 device.id=7 的所有文档,然后使用其中的 all 设备构建它的平均值文件。
索引映射如下(仅重要部分):
"mappings" : {
"devdocs" : {
"_all": { "enabled": false },
"properties" : {
"cycle": {
"type": "object",
"properties": {
"t": {
"type": "date",
"format": "dateOptionalTime||epoch_second"
}
}
},
"devices": {
"type": "nested",
"include_in_parent": true,
"properties": {
"name": {
"type": "string",
"index": "not_analyzed"
},
"aw": {
"type": "long"
}
"t": {
"type": "date",
"format": "dateOptionalTime||epoch_second"
},
}
}
}
}
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,或者我做错了什么?
【问题讨论】:
标签: elasticsearch kibana kibana-4