You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch如何查询指定编号传感器近一天的最大、最小数值

查询存在的核心问题

  • 没有添加sensor.number = 13的过滤条件,未限定目标传感器
  • 没有添加近一天的时间范围过滤,会查询所有历史数据
  • 聚合范围未和过滤条件绑定:nested查询的作用只是筛选「包含符合要求的嵌套对象的父文档」,聚合时直接取全量sensor.values对象,会把其他传感器的数值也纳入计算

修正后的查询语句

假设你的文档根节点存储了上报时间字段为report_time,如果时间字段存放在其他位置,自行修改对应路径即可:

{
  "query": {
    "bool": {
      "must": [
        // 近一天时间过滤,时间字段路径根据实际结构调整
        {
          "range": {
            "report_time": {
              "gte": "now-1d/d",
              "lte": "now/d"
            }
          }
        },
        {
          "nested": {
            "path": "sensor",
            "query": {
              "bool": {
                "must": [
                  // 限定传感器编号为13
                  {
                    "term": {
                      "sensor.number": 13
                    }
                  },
                  {
                    "nested": {
                      "path": "sensor.values",
                      "query": {
                        "match": {
                          "sensor.values.type": "TEMPERATURE"
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
  "aggs": {
    // 先进入sensor嵌套层,过滤出编号为13的传感器
    "sensor_agg": {
      "nested": {
        "path": "sensor"
      },
      "aggs": {
        "filter_sensor_13": {
          "filter": {
            "term": {
              "sensor.number": 13
            }
          },
          "aggs": {
            // 再进入对应传感器的values嵌套层
            "values_agg": {
              "nested": {
                "path": "sensor.values"
              },
              "aggs": {
                "filter_temperature": {
                  "filter": {
                    "match": {
                      "sensor.values.type": "TEMPERATURE"
                    }
                  },
                  "aggs": {
                    "max_temp": {
                      "max": {
                        "field": "sensor.values.value"
                      }
                    },
                    "min_temp": {
                      "min": {
                        "field": "sensor.values.value"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  // 不需要返回原始文档,仅保留聚合结果,提升查询性能
  "size": 0
}

内容的提问来源于stack exchange,提问作者RDR_Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:15:04