简而言之:InfluxDB 技术提示 - HTTP API:返回查询结果 & 验证请求
作者:Regan Kuchan / 开发者
2016年8月25日
导航至
在本文中,我们回顾了本周最有趣的 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 身份验证和基本身份验证。
您的第一个选择是使用查询字符串参数 u
和 p
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 用户组中发布您的问题。
接下来是什么?
- 正在为您的基础设施寻找 InfluxDB 集群?立即开始使用 InfluxDB Enterprise Beta 版,现已可供评估。
- 下载并开始使用 InfluxDB 1.0 RC1
- 安排与解决方案架构师的免费 20 分钟咨询,以审查您的 InfluxDB 项目
- 参加我们的免费虚拟培训研讨会之一。