简而言之:InfluxDB 技术提示 - HTTP API:返回查询结果 & 验证请求

导航至

在本文中,我们回顾了本周最有趣的 InfluxDB 和 TICK-stack 相关问题、解决方法、操作指南以及来自 GitHub、IRC 和 InfluxDB Google Group 的问答,这些内容您可能错过了。

使用 HTTP API 分块查询响应

问:是否可以批量返回查询响应,而不是作为单个响应返回?

答:是的!HTTP API 查询字符串参数 chunked=true 告诉 InfluxDB 以流式批量返回点,而不是单个响应。如果设置为 true,InfluxDB 会按系列或每 10,000 个点分块响应,以先发生者为准。如果设置为特定值(例如,chunked=20000),InfluxDB 会按系列或按该点数分块响应。

有关查询字符串参数的更多信息,请参阅 API 参考文档

在 WHERE 子句中使用 OR 和绝对时间

问:我正在尝试查询具有特定时间戳的点。我可以看到我已经成功写入了这些点,但我的查询没有返回任何结果。是我做错了什么吗?

> SELECT * FROM "heaven"
name: heaven
------------
time                   cherrypie
2016-08-24T20:00:00Z   1
2016-08-24T20:10:00Z   4

> SELECT * FROM "heaven" WHERE time = '2016-08-24T20:00:00Z' OR time = '2016-08-24T20:10:00Z'

答:目前,InfluxQL 不支持在 WHERE 子句中使用 OR绝对时间。如果查询的 WHERE 子句使用 OR 和绝对时间,InfluxDB 将返回空响应。

在此期间,您可以将查询拆分为两个查询

> SELECT * FROM "heaven" WHERE time = '2016-08-24T20:00:00Z'
name: heaven
------------
time                   cherrypie
2016-08-24T20:00:00Z   1

> SELECT * FROM "heaven" WHERE time = '2016-08-24T20:10:00Z'
name: heaven
------------
time                   cherrypie
2016-08-24T20:10:00Z   4

或者您可以使用 AND 代替 OR

> SELECT * FROM "heaven" WHERE time >= '2016-08-24T20:00:00Z' AND time <= '2016-08-24T20:10:00Z'
name: heaven
------------
time                   cherrypie
2016-08-24T20:00:00Z   1
2016-08-24T20:10:00Z   4

请参阅 GitHub Issue #3290 以跟踪此问题。

使用 HTTP API 验证请求

问:我已在配置文件中启用了身份验证。如何使用 HTTP API 验证请求?

答:InfluxDB 的 HTTP API 支持 HTTP 身份验证和基本身份验证。

您的第一个选择是使用查询字符串参数 up

curl -i -XPOST "http://localhost:8086/write?db=topsecret&u=myusername&p=mypassword" --data-binary 'manila_envelope,location=confidential number=91'

您的第二个选择是使用基本身份验证

curl -i -XPOST -u myusername:mypassword "http://localhost:8086/write?db=topsecret" --data-binary 'manila_envelope,location=confidential number=91'

有关使用 API 的更多信息,请查看 API 参考文档

有关更多 InfluxDB 技巧,请参阅我们的“常见问题解答”页面,并随时在 InfluxDB 用户组中发布您的问题。

接下来是什么?