美文网首页
InfluxDB (三)Querying Data with t

InfluxDB (三)Querying Data with t

作者: 46f31ed46b17 | 来源:发表于2018-01-08 17:43 被阅读261次

    HTTP API是查询InfluxDB中数据的主要手段(命令行界面和客户端库及其他方法也可查询)

    使用HTTP API 查询InfluxDB

    使用HTTP API在InfluxDB进行查询主要是发送 GET 请求到 InfluxDB的 /query 端,调用示例如下所示:

    curl -GET 'http://localhost:8086/query?pretty=true' --data-urlencode "db=——internal" 
    --data-urlencode "q=show measurements"
    

    其中:

    • pretty=true 格式化输出结果
    • db=mydb 指定了查询的数据库
    • q 代表了需执行的查询语句。

    你也可以在浏览器中直接输入

    http://localhost:8086/query?pretty=true&db=_internal&q=show%20measurements
    

    返回json如下

    {
        "results": [
            {
                "statement_id": 0,
                "series": [
                    {
                        "name": "measurements",
                        "columns": [
                            "name"
                        ],
                        "values": [
                            [
                                "cq"
                            ],
                            [
                                "database"
                            ],
                            [
                                "httpd"
                            ],
                            [
                                "queryExecutor"
                            ],
                            [
                                "runtime"
                            ],
                            [
                                "shard"
                            ],
                            [
                                "subscriber"
                            ],
                            [
                                "tsm1_cache"
                            ],
                            [
                                "tsm1_engine"
                            ],
                            [
                                "tsm1_filestore"
                            ],
                            [
                                "tsm1_wal"
                            ],
                            [
                                "write"
                            ]
                        ]
                    }
                ]
            }
        ]
    }
    

    在页面中也提供了生成HTTP 请求URL的方法,如下所示:


    HTTP API查询多条数据

    在单个API调用中向InfluxDB发送多个查询。简单地用 ; 分隔每个查询,便可以同时查询多条数据。例如:

    curl -GET 'http://localhost:8086/query?db=_internal'
    --data-urlencode "q=show databases;show measurements"
    

    返回json

    {"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["testDB"],["test"],["telegraf"]]}]},{"statement_id":1,"series":[{"name":"measurements","columns":["name"],"values":[["cq"],["database"],["httpd"],["queryExecutor"],["runtime"],["shard"],["subscriber"],["tsm1_cache"],["tsm1_engine"],["tsm1_filestore"],["tsm1_wal"],["write"]]}]}]}
    

    HTTP API 查询其他选项

    1)时间格式

    在使用HTTP查询时可以使用 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'"
    

    这样会获取到以秒为单位的时间数据。

    2)指定每次查询数据大小

    可以使用 chunk_size 参数来指定每次结果的大小。比如,我要结果每次返回200个点的数据,则如下所示:

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

    这样查询结果就会返回200个点的数据。

    相关文章

      网友评论

          本文标题:InfluxDB (三)Querying Data with t

          本文链接:https://www.haomeiwen.com/subject/wwvbnxtx.html