TL;DR 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 问题 #3290 跟踪此问题。
使用 HTTP API 进行请求认证
问:我在配置文件中启用了认证。我如何使用 HTTP API 进行请求认证?
答:InfluxDB 的 HTTP API 支持HTTP认证和基本认证。
您的第一个选项是使用查询字符串参数 u
和 p
curl -i -XPOST "https://127.0.0.1:8086/write?db=topsecret&u=myusername&p=mypassword" --data-binary 'manila_envelope,location=confidential number=91'
您的第二个选项是使用基本认证
curl -i -XPOST -u myusername:mypassword "https://127.0.0.1:8086/write?db=topsecret" --data-binary 'manila_envelope,location=confidential number=91'
有关使用 API 的更多信息,请参阅 API 参考文档。
想要了解更多InfluxDB技巧,请参阅我们的常见问题解答页面,并欢迎您在InfluxDB用户组中提问。