193 lines
7.5 KiB
Markdown
193 lines
7.5 KiB
Markdown
|
|
The [InfluxDB v2 API](/influxdb/version/reference/api) provides a programmatic interface for all interactions with InfluxDB.
|
|
To query InfluxDB {{< current-version >}}, do one of the following:
|
|
|
|
- [Send a Flux query request](#send-a-flux-query-request)
|
|
- [Send an InfluxQL query request](#send-an-influxql-query-request)
|
|
|
|
## Send a Flux query request
|
|
|
|
Send a Flux query request to the following endpoint:
|
|
|
|
{{% api-endpoint method="POST" endpoint="/api/v2/query" api-ref="/influxdb/version/api/#operation/PostQueryAnalyze" %}}
|
|
|
|
In your request, set the following:
|
|
|
|
- Your organization via the `org` or `orgID` URL parameters
|
|
- Headers:
|
|
- `Authorization: Token <API_TOKEN>`
|
|
- `Accept: application/csv`
|
|
- `Content-type: application/vnd.flux`
|
|
- Your Flux query text in the request body
|
|
|
|
> [!Note]
|
|
> #### Use gzip to compress a large query response
|
|
>
|
|
> To compress the query response, set the `Accept-Encoding` header to `gzip`.
|
|
> This saves network bandwidth, but increases server-side load.
|
|
>
|
|
> We recommend only using gzip compression on responses that are larger than 1.4 KB.
|
|
> If the response is smaller than 1.4 KB, gzip encoding will always return a 1.4 KB
|
|
> response, despite the uncompressed response size.
|
|
> 1500 bytes (~1.4 KB) is the maximum transmission unit (MTU) size for the public
|
|
> network and is the largest packet size allowed at the network layer.
|
|
|
|
#### Flux - Example query request
|
|
|
|
The following example shows how to use cURL to send a Flux query to InfluxDB {{< current-version >}}:
|
|
|
|
{{% code-placeholders "ORG_ID|API_TOKEN|BUCKET_NAME" %}}
|
|
```bash
|
|
{{< code-tabs-wrapper >}}
|
|
{{% code-tabs %}}
|
|
[Without compression](#)
|
|
[With compression](#)
|
|
{{% /code-tabs %}}
|
|
|
|
{{% code-tab-content %}}
|
|
```bash
|
|
curl --request POST \
|
|
http://localhost:8086/api/v2/query?orgID=ORG_ID \
|
|
--header 'Authorization: Token API_TOKEN' \
|
|
--header 'Accept: application/csv' \
|
|
--header 'Content-type: application/vnd.flux' \
|
|
--data 'from(bucket:"BUCKET_NAME")
|
|
|> range(start: -12h)
|
|
|> filter(fn: (r) => r._measurement == "example-measurement")
|
|
|> aggregateWindow(every: 1h, fn: mean)'
|
|
```
|
|
{{% /code-tab-content %}}
|
|
|
|
{{% code-tab-content %}}
|
|
```bash
|
|
curl --request POST \
|
|
http://localhost:8086/api/v2/query?orgID=ORG_ID \
|
|
--header 'Authorization: Token API_TOKEN' \
|
|
--header 'Accept: application/csv' \
|
|
--header 'Content-type: application/vnd.flux' \
|
|
--header 'Accept-Encoding: gzip' \
|
|
--data 'from(bucket:"BUCKET_NAME")
|
|
|> range(start: -12h)
|
|
|> filter(fn: (r) => r._measurement == "example-measurement")
|
|
|> aggregateWindow(every: 1h, fn: mean)'
|
|
```
|
|
{{% /code-tab-content %}}
|
|
{{< /code-tabs-wrapper >}}
|
|
|
|
{{% /code-placeholders %}}
|
|
|
|
Replace the following with your values:
|
|
|
|
- {{% code-placeholder-key %}}`ORG_ID`{{% /code-placeholder-key %}} - the ID of the [organization](/influxdb/version/admin/organizations/) that owns the bucket.
|
|
- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}} - your [token](/influxdb/version/admin/tokens/).
|
|
- {{% code-placeholder-key %}}`BUCKET_NAME`{{% /code-placeholder-key %}} - the name of the [bucket](/influxdb/version/admin/buckets/) to create.
|
|
|
|
## Send an InfluxQL query request
|
|
|
|
You can query InfluxDB {{< current-version >}} using the InfluxQL query language with the v1-compatible API.
|
|
Send an InfluxQL query in an HTTP `GET` or `POST` request to the following endpoint:
|
|
|
|
{{% api-endpoint endpoint="/query" api-ref="/influxdb/v2/api/v2/#operation/GetLegacyQuery" %}}
|
|
|
|
In your request, set the following:
|
|
|
|
- [1.x-compatible or 2.x authentication](/influxdb/v2/api-guide/influxdb-1x/#authentication) credentials
|
|
- Headers:
|
|
- `Accept: application/csv` or `Accept: application/json`
|
|
- `Content-type: application/vnd.influxql`
|
|
- Your InfluxQL query text in the request body or the `q` URL parameter
|
|
|
|
> [!Note]
|
|
> If you have an existing bucket that doesn't follow the **database/retention-policy** naming convention,
|
|
> you **must** [manually create a database and retention policy mapping](/influxdb/v2/query-data/influxql/dbrp/#create-dbrp-mappings)
|
|
> to query that bucket with the `/query` compatibility API.
|
|
|
|
#### InfluxQL - Example query request
|
|
|
|
The following example shows how to use cURL to send an InfluxQL query to InfluxDB {{< current-version >}} using 1.x compatible authentication:
|
|
|
|
{{% code-placeholders "API_TOKEN|BUCKET_NAME|RETENTION_POLICY_NAME" %}}
|
|
|
|
{{< code-tabs-wrapper >}}
|
|
{{% code-tabs %}}
|
|
[HTTP POST](#)
|
|
[HTTP GET](#)
|
|
{{% /code-tabs %}}
|
|
|
|
{{% code-tab-content %}}
|
|
```bash
|
|
# 1.x compatible POST request using Basic authentication and InfluxQL
|
|
curl --request POST \
|
|
"http://localhost:8086/query?db=BUCKET_NAME&rp=RETENTION_POLICY&p=API_TOKEN&u=ignored" \
|
|
--header "Content-type: application/vnd.influxql" \
|
|
--data "SELECT * FROM home WHERE time < now()"
|
|
```
|
|
{{% /code-tab-content %}}
|
|
{{% code-tab-content %}}
|
|
```bash
|
|
# 1.x compatible GET request using Basic authentication and InfluxQL
|
|
curl --get "http://localhost:8086/query" \
|
|
--header "Accept: application/json" \
|
|
--data-urlencode "q=SELECT * FROM home WHERE time < now()" \
|
|
--data-urlencode "db=BUCKET_NAME" \
|
|
--data-urlencode "rp=RETENTION_POLICY" \
|
|
--data-urlencode "u=ignored" \
|
|
--data-urlencode "p=API_TOKEN"
|
|
```
|
|
{{% /code-tab-content %}}
|
|
{{< /code-tabs-wrapper >}}
|
|
|
|
{{% /code-placeholders %}}
|
|
Replace the following with your values:
|
|
- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}} - your [token](/influxdb/version/admin/tokens/).
|
|
- {{% code-placeholder-key %}}`BUCKET_NAME`{{% /code-placeholder-key %}} - the name of the [bucket](/influxdb/version/admin/buckets/) to create.
|
|
- {{% code-placeholder-key %}}`RETENTION_POLICY_NAME`{{% /code-placeholder-key %}} - the name of the 1.x retention policy to use for the query.
|
|
|
|
{{% code-placeholders "ORG_ID|API_TOKEN|BUCKET_NAME|RETENTION_POLICY_NAME" %}}
|
|
|
|
{{< code-tabs-wrapper >}}
|
|
{{% code-tabs %}}
|
|
[Without compression](#)
|
|
[With compression](#)
|
|
{{% /code-tabs %}}
|
|
|
|
{{% code-tab-content %}}
|
|
```bash
|
|
curl --get "http://localhost:8086/query" \
|
|
--header 'Accept: application/csv' \
|
|
--header 'Content-type: application/json' \
|
|
--data-urlencode "db=BUCKET_NAME" \
|
|
--data-urlencode "rp=RETENTION_POLICY_NAME" \
|
|
--data-urlencode "p=API_TOKEN" \
|
|
--data-urlencode "u=ignored" \
|
|
--data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
|
|
```
|
|
{{% /code-tab-content %}}
|
|
{{% code-tab-content %}}
|
|
|
|
```bash
|
|
curl --get "http://localhost:8086/query" \
|
|
--header 'Accept: application/csv' \
|
|
--header 'Content-type: application/json' \
|
|
--header 'Accept-Encoding: gzip' \
|
|
--data-urlencode "db=BUCKET_NAME" \
|
|
--data-urlencode "rp=RETENTION_POLICY_NAME" \
|
|
--data-urlencode "p=API_TOKEN" \
|
|
--data-urlencode "u=ignored" \
|
|
--data-urlencode "q=SELECT used_percent FROM example-db.example-rp.example-measurement WHERE host=host1"
|
|
```
|
|
```
|
|
{{% /code-tab-content %}}
|
|
{{< /code-tabs-wrapper >}}
|
|
|
|
{{% /code-placeholders %}}
|
|
|
|
Replace the following with your values:
|
|
|
|
- {{% code-placeholder-key %}}`ORG_ID`{{% /code-placeholder-key %}} - the ID of the [organization](/influxdb/version/admin/organizations/) that owns the bucket.
|
|
- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}} - your [token](/influxdb/version/admin/tokens/).
|
|
- {{% code-placeholder-key %}}`BUCKET_NAME`{{% /code-placeholder-key %}} - the name of the [bucket](/influxdb/version/admin/buckets/) to create.
|
|
- {{% code-placeholder-key %}}`RETENTION_POLICY_NAME`{{% /code-placeholder-key %}} - the name of the 1.x retention policy to use for the query.
|
|
|
|
InfluxDB returns the query results in [annotated CSV](/influxdb/version/reference/syntax/annotated-csv/).
|