json - Elasticsearch:从对象映射的特定对象中获取最大值和最小值
问题描述
我有这个弹性索引的映射,我试图获取特定传感器一天的最大值,但我的查询得到了所有传感器的值。
"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 号传感器的 las day 的最大值和最小值,我试了一下,但我得到了所有传感器的最大值。
{"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"
}
}
}
}
}
}
我是弹性搜索的新手,有人可以帮忙吗?谢谢。
解决方案
您还需要在聚合部分添加嵌套过滤器以仅聚合相关的嵌套文档,即与 相关的文档,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"
}
}
}
}
}
}
}
}
推荐阅读
- macos - 如何将工具栏(或其项目)与拆分视图控制器的子项的前沿对齐?
- html - 样式化 HRef Float 右不工作 CSS
- django - 从 Excel Web 数据访问 IIS Windows 身份验证网站
- c++ - 使标题看起来像是在不同的文件夹中
- html - CSS 文件被删除或隐藏在 atom 中
- react-native - 如何将两个组件放在屏幕的左右两侧
- c - 使用函数创建链表的问题
- azure-devops - Azure DevOps 基于角色的菜单项
- windows - 如何从Windows cmd中的文件中打印一行的某些部分
- c# - 是否可以在 DropDownList html helper 中使用链接?