如何在几秒钟内将点写入Influxdb 0.8

时间:2015-06-30 19:35:55

标签: influxdb

我想将点写入一个涌入0.8数据库,其中时间值以秒为单位通过HTTP给出。这是JSON格式的示例点:

[
    {
        "points": [
            [
                1435692857.0,
                897
            ]
        ],
        "name": "some_series",
        "columns": [
            "time",
            "value"
        ]
    }
]

文档不清楚时间值的格式应该是什么(纳秒或毫秒?)以及如何指定涌入期望的内容。目前我正在使用查询参数:precision=s

这似乎工作正常,服务器按预期返回HTTP状态代码200。使用涌入查询数据库时#39;使用select * from some_series的管理界面返回表中的数据点,并带有预期的时间戳。但是,在图表上,时间轴的分数为秒,而像select * from some_series where time > now() - 1h这样的查询不会产生任何结果。

我认为时间戳有问题。我尝试将我的值乘以1000,但没有任何内容插入到数据库中,没有可见的错误。

问题是什么?

2 个答案:

答案 0 :(得分:1)

默认情况下,假定提供的时间戳以毫秒为单位。我认为您的写入默认为毫秒,因为查询字符串参数应为time_precision=s,而不是precision=s

查看"书面数据的时间精度"在https://influxdb.com/docs/v0.8/api/reading_and_writing_data.html

我还认为time值应该是整数而不是浮点数。我不确定如何解释其他行为,其中时间戳似乎是正确的日期,乘以1000并不能解决问题,但我想知道它是否与写浮点数有关。

请联系InfluxDB支持团队,联系support@influxdb.com获取进一步的帮助。

答案 1 :(得分:0)

我找到了解决方案!问题只在于精确度。你的答案是正确的,查询参数被称为where time < now()我应该发布整数而不是浮点数。这可能是我尝试的第一件事,没有结果......

但是,由于某些时区问题,我的时间值将来相对于服务器时间,默认情况下,任何select语句都包含select value from some_series where time < now() + 1h 语句。因此,实际上值已写入数据库,但由于隐藏的where语句而未显示。解决方案是告诉数据库返回“future”值:

if (obj === searchEle) {
  deferred = $q.defer();
  deferred.resolve(jsObject[obj]);
}