我有彈性索引的這個映射,我試圖獲得特定傳感器一天的最大值,但我的查詢獲得了所有傳感器的值。
"sensor": {
"type": "nested",
"properties": {
"type": {
"type": "integer"
},
"name": {
"type": "keyword"
},
"number": {
"type": "integer"
},
"values": {
"type": "nested",
"properties": {
"type": {
"type": "text"
},
"value": {
"type": "float"
},
"unit": {
"type": "text"
},
"Lmin": {
"type": "float"
},
"Lmax": {
"type": "float"
}
}
}
}
這是物件的映射,

我只需要傳感器編號 13 中最后一天的最大值和最小值,我嘗試過,但我曾經獲得所有傳感器的最大值。
{"query": {
"nested": {
"path": "sensor",
"query": {
"nested": {
"path": "sensor.values",
"query": {
"bool": {
"must": [
{
"match": {
"sensor.values.type": "TEMPERATURE"
}
}
]
}
}
}
}
}
},
"aggs": {
"agg_by_type": {
"nested": {
"path": "sensor.values"
},
"aggs": {
"max_value": {
"max": {
"field": "sensor.values.value"
}
}
}
}
}
}
我是 elasticsearch 的新手,有人可以幫忙嗎?,謝謝。
uj5u.com熱心網友回復:
您還需要在聚合部分添加嵌套過濾器,以僅聚合相關的嵌套檔案,即與 相關的檔案TEMPERATURE,如下所示:
{
"query": {
"nested": {
"path": "sensor",
"query": {
"nested": {
"path": "sensor.values",
"query": {
"bool": {
"must": [
{
"match": {
"sensor.values.type": "TEMPERATURE"
}
}
]
}
}
}
}
}
},
"aggs": {
"agg_by_type": {
"nested": {
"path": "sensor.values"
},
"aggs": {
"temperature_only": {
"filter": {
"match": {
"sensor.values.type": "TEMPERATURE"
}
},
"aggs": {
"max_value": {
"max": {
"field": "sensor.values.value"
}
}
}
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/357705.html
上一篇:如何查詢每個欄位?
