在ElasticSearch聚合操作

问题描述 投票:0回答:1

我有一个问题语句,其中我有一个居的车辆的数据,具有以毫秒为单位和速度在秒的字段的时间,时间。现在我想获取数据,并绘制出速度VS在前端时间图。但问题是有大量的数据点作为1秒的有30-40毫秒条目和相应的速度也是如此。现在,以减少我想要得到的速度平均一秒钟的数据点,让我只有一个数据点为1秒。我怎样才能做到这一点的居。

elasticsearch elastic-stack
1个回答
1
投票

考虑到你的映射看起来像 -

{
  "properties": {
    "ms": {
      "type": "integer"
    },
    "seconds": {
      "type": "integer"
    },
    "velocity": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": "256"
        }
      }
    }
  }
}

下面的嵌套的聚集将工作 - 你会得到你的数据点在现场“averageMsInSecond”。

{
  "size": 0,
  "aggs": {
    "seconds_buckets": {
      "terms": {
        "field": "seconds"
      },
      "aggs": {
        "averageMsInSecond": {
          "avg": {
            "field": "ms"
          }
        }
      }
    }
  }
}

为了得到平均值为第二,你需要在seconds_buckets AGGS读取钥匙并用它与averageMsInSecond一起。

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.