InfluxDB时序数据库的安装使用教程6(使用HTTP API接口进行操作)
前面文章我们都是通过命令行的方式操作 InfluxDB 数据库,其实 InfluxDB 也提供了一系列的 HttpAPI 供我们调用,下面通过样例进行演示。
六、使用 HTTP 接口进行操作
1,准备工作
由于 InfluxDB HTTP API 默认的端口是 8086,如果服务器有防火墙的话,需要执行如下命令打开该端口:
firewall-cmd --permanent --add-port=8086/tcp firewall-cmd --reload
2,创建数据库
(1)下面我们使用 Postman 进行测试,通过发送一个 post 请求来创建一个名为 mydb 的数据库:
- 请求地址:http://IP:8086/query
- 参数 q 为 CREATE DATABASE mydb
(2)接着将参数 q 改成 SHOW DATABASES 查询当前所有的数据库,可以发现 mydb 数据库已经创建成功。
提示:如果要删除 mydb 数据库则将参数 q 改成 DROP DATABASE mydb 即可。
3,插入数据(新建表)
(1)InfluxDB 中没有显式的新建表的语句,只能通过 insert 数据的方式来建立新表,我们发送一个 post 请求到 /write 路径来写入一条数据:
- 请求地址(指定数据库):http://IP:8086/write?db=mydb
- body 里则为我们希望存储的时间序列数据。它的组成部分有 measurement、tags、fields 和 timestamp(如果不写 timestamp 系统会自动追加时间戳)。
(2)当然我们也可以一次性写入多个数据点:
提示:使用批量写会有更好地性能,InfluxData 建议每个 batch 的大小在 5000~10000 个数据点。
(3)我们也可以写入来自文件的数据,比如这里我们 data.txt 里的内容就是上面的数据,执行结果是一样的:
4,查询数据
(1)我们发送如下一个 post 请求来查询 mydb 的数据库下的所有表(measurement):
- 请求地址:http://IP:8086/query
- 参数 db 为 mydb
- 参数 q 为 SHOW MEASUREMENTS
(2)我们将参数 q 改成 SELECT * FROM "temperature" 来查询 temperature 表中的数据:
(3)我们也可以在一次 API 调用中发送多个 InfluxDB 的查询语句,只需简单地使用分号分隔每个查询即可:
(4)查询时间戳默认返回 RFC3339 格式的纳米级的 UTC 时间,例如 2015-08-04T19:05:14.318570484Z。如果我们想要返回 Unix 格式的时间,可以在请求参数里设置 epoch 参数,其中epoch 可以是 [h,m,s,ms,u,ns] 之一。
- 比如下面查询我们返回一个秒级的 epoch: