InfluxDB之HTTP API查询数据

HTTP API是查询InfluxDB数据的主要方式(查询数据库的其他方法请参阅命令行界面客户端库)。

 

要执行查询,请将GET请求发送到/query点,将URL参数db设置为目标数据库,并将URL参数q设置为查询。 您也可以使用POST请求,通过发送相同的参数作为URL参数,或者使用application /x-www-form-urlencoded作为请求内容的一部分。 下面的示例使用HTTP API来查询您在写数据中创建的同一个数据库。

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"

 

InfluxDB返回JSON。您的查询结果显示在“results”数组中。 如果发生错误,InfluxDB会设置一个“error”键并附上错误说明。

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "cpu_load_short",
                    "columns": [
                        "time",
                        "value"
                    ],
                    "values": [
                        [
                            "2015-01-29T21:55:43.702900257Z",
                            2
                        ],
                        [
                            "2015-01-29T21:55:43.702900257Z",
                            0.55
                        ],
                        [
                            "2015-06-11T20:46:02Z",
                            0.64
                        ]
                    ]
                }
            ]
        }
    ]
}

注意:在URL中添加pretty = true将启用漂亮的JSON输出。 虽然这对调试或直接使用curl等工具进行查询很有用,但不建议用于生产,因为它会消耗不必要的网络带宽。

 

多个查询


在单个API调用中向InfluxDB发送多个查询。简单地用分号分隔每个查询即可,例如:

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west';SELECT count(\"value\") FROM \"cpu_load_short\" WHERE \"region\"='us-west'"


返回:

 

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "cpu_load_short",
                    "columns": [
                        "time",
                        "value"
                    ],
                    "values": [
                        [
                            "2015-01-29T21:55:43.702900257Z",
                            2
                        ],
                        [
                            "2015-01-29T21:55:43.702900257Z",
                            0.55
                        ],
                        [
                            "2015-06-11T20:46:02Z",
                            0.64
                        ]
                    ]
                }
            ]
        },
        {
            "statement_id": 1,
            "series": [
                {
                    "name": "cpu_load_short",
                    "columns": [
                        "time",
                        "count"
                    ],
                    "values": [
                        [
                            "1970-01-01T00:00:00Z",
                            3
                        ]
                    ]
                }
            ]
        }
    ]
}

查询数据的其他选项

时间戳格式


InfluxDB中的所有内容都以UTC存储和报告。默认情况下,时间戳以RFC3339 UTC标准返回,具有纳秒精度,例如2015-08-04T19:05:14.318570484Z。 如果你需要Unix格式的时间戳,使用请求查询字符串参数epoch其中epoch=[h,m,s,ms,u,ns]。 例如,获取秒级和时间戳:

 

curl -G 'http://localhost:8086/query' --data-urlencode "db=mydb" --data-urlencode "epoch=s" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"


认证


InfluxDB中的认证默认不启用。 有关如何启用和设置身份验证,请参阅身份验证和授权


最大行数限制


max-row-limit配置选项允许用户限制返回结果的最大数量,以防止InfluxDB在汇总结果时耗尽内存。最大行数限制选项默认设置为0。 该默认设置允许每个请求返回无限数量的行。 最大行数限制仅适用于非分块查询。 分块查询可以返回无限数量的点。

 

分块


通过设置查询字符串参数chunked=true,可以使用分块返回流式批量结果而不是单个响应。 响应将按照序列或每10000点进行分块,以先发生者为准。 要将最大块大小更改为其他值,请将查询字符串参数chunk_size设置为不同的值。例如,以每批20,000点得到你的结果:

curl -G 'http://localhost:8086/query' --data-urlencode "db=deluge" --data-urlencode "chunked=true" --data-urlencode "chunk_size=20000" --data-urlencode "q=SELECT * FROM liters"

InfluxQL

 

现在您已经知道如何查询数据了,请查看Data Exploration页面以熟悉InfluxQL。 有关使用HTTP API查询数据的更多信息,请参阅API参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值