Golang InfluxDB 客户端使用 _field 键写入点

2024年 2月 6日 103.1k 0

golang influxdb 客户端使用 _field 键写入点

问题内容

我想用这样的签名写点InfluxDB:

{
"_field": "some_uuid",
"_value": float64,
"_time": "2006-01-02T15:04:05.000Z"
}

登录后复制

但是 uuid 写入“field”键而不是“_field”,并且“_field”键具有默认值 - “value”。

我该如何修复它?

这是我的示例代码:

import (
"fmt"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
"time"
)

type TagData struct {
TagId string `json:"tag_id"`
Value float64 `json:"value"`
Timestamp string `json:"timestamp"`
}

func main() {
inflClient := influxdb2.NewClient("my_url", "my_token")
writeAPI := inflClient.WriteAPI("my_org", "my_bucket")

data := TagData{
TagId: "d8f623a9-c255-4e0d-9c2f-126056875cef",
Value: 300,
Timestamp: "2023-12-11T15:35:42.343Z",
}
parsedTime, err := time.Parse("2006-01-02T15:04:05.000Z", data.Timestamp)
if err != nil {
fmt.Println("Error parsing time:", err)
return
}
point := influxdb2.NewPointWithMeasurement("data").
AddTag("field", data.TagId).
AddField("value", data.Value).
SetTime(parsedTime.UTC())
writeAPI.WritePoint(point)
writeAPI.Flush()
inflClient.Close()
}

登录后复制

正确答案

如果有人遇到同样的问题 - 可能的解决方案是:

point := influxdb2.NewPointWithMeasurement("your_measurement").
AddField(data.TagId, data.Value).
SetTime(parsedTime.UTC())

登录后复制

point := influxdb2.NewPoint("your_measurement",
map[string]string{},
map[string]interface{}{data.TagId: data.Value},
parsedTime.UTC())

登录后复制

以上就是Golang InfluxDB 客户端使用 _field 键写入点的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论