From 117b5c99fe52388deaf1ab4eae7549c13e2b6a81 Mon Sep 17 00:00:00 2001 From: vlastahajek Date: Fri, 2 Oct 2020 17:30:56 +0200 Subject: [PATCH] fix(client): Fixing Go client guide reflect latest state --- .../v2.0/tools/client-libraries/go.md | 101 +++++++++--------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/content/influxdb/v2.0/tools/client-libraries/go.md b/content/influxdb/v2.0/tools/client-libraries/go.md index fa2939014..17107e1cd 100644 --- a/content/influxdb/v2.0/tools/client-libraries/go.md +++ b/content/influxdb/v2.0/tools/client-libraries/go.md @@ -21,15 +21,12 @@ If just getting started, see [Get started with InfluxDB](/influxdb/v2.0/get-star ## Before you begin -1. [Install Go 1.3 or later](https://golang.org/doc/install). -2. Download the client package in your $GOPATH and build the package. +1. [Install Go 1.13 or later](https://golang.org/doc/install). +2. Add the client package your to your project dependencies. ```sh - # Download the InfluxDB Go client package - go get github.com/influxdata/influxdb-client-go - - # Build the package - go build + # Add InfluxDB Go client package to your project go.mod + go get github.com/influxdata/influxdb-client-go/v2 ``` 3. Ensure that InfluxDB is running and you can connect to it. For information about what URL to use to connect to InfluxDB OSS or InfluxDB Cloud, see [InfluxDB URLs](/influxdb/v2.0/reference/urls/). @@ -44,12 +41,12 @@ Use the Go library to write and query data from InfluxDB. package main import ( - "context" - "fmt" - "time" + "context" + "fmt" + "time" - influxdb2 "github.com/influxdata/influxdb-client-go" - ) + "github.com/influxdata/influxdb-client-go/v2" + ) ``` 2. Define variables for your InfluxDB [bucket](/influxdb/v2.0/organizations/buckets/), [organization](/influxdb/v2.0/organizations/), and [token](/influxdb/v2.0/security/tokens/). @@ -68,16 +65,16 @@ Use the Go library to write and query data from InfluxDB. client := influxdb2.NewClient(url, token) ``` -4. Create a **write client** with the `WriteApiBlocking` method and pass in the `org` and `bucket` parameters. +4. Create a **write client** with the `WriteAPIBlocking` method and pass in the `org` and `bucket` parameters. ```go - writeApi := client.WriteApiBlocking(org, bucket) + writeAPI := client.WriteAPIBlocking(org, bucket) ``` 5. To query data, create an InfluxDB **query client** and pass in your InfluxDB `org`. ```go - queryApi := client.QueryApi(org) + queryAPI := client.QueryAPI(org) ``` ## Write data to InfluxDB with Go @@ -93,32 +90,32 @@ Use the Go library to write data to InfluxDB. map[string]string{"unit": "temperature"}, map[string]interface{}{"avg": 24.5, "max": 45}, time.Now()) - writeApi.WritePoint(context.Background(), p) + writeAPI.WritePoint(context.Background(), p) client.Close() ``` ### Complete example write script ```go - func main() { - bucket := "example-bucket" - org := "example-org" - token := "example-token" - // Store the URL of your InfluxDB instance - url := "http://localhost:8086" - // Create new client with default option for server url authenticate by token - client := influxdb2.NewClient(url, token) - // User blocking write client for writes to desired bucket - writeApi := client.WriteApiBlocking(org, bucket) - // Create point using full params constructor - p := influxdb2.NewPoint("stat", - map[string]string{"unit": "temperature"}, - map[string]interface{}{"avg": 24.5, "max": 45}, - time.Now()) - // Write point immediately - writeApi.WritePoint(context.Background(), p) - // Ensures background processes finishes - client.Close() +func main() { + bucket := "example-bucket" + org := "example-org" + token := "example-token" + // Store the URL of your InfluxDB instance + url := "http://localhost:8086" + // Create new client with default option for server url authenticate by token + client := influxdb2.NewClient(url, token) + // User blocking write client for writes to desired bucket + writeAPI := client.WriteAPIBlocking(org, bucket) + // Create point using full params constructor + p := influxdb2.NewPoint("stat", + map[string]string{"unit": "temperature"}, + map[string]interface{}{"avg": 24.5, "max": 45}, + time.Now()) + // Write point immediately + writeAPI.WritePoint(context.Background(), p) + // Ensures background processes finishes + client.Close() } ``` ## Query data from InfluxDB with Go @@ -128,8 +125,8 @@ Use the Go library to query data to InfluxDB. ```js from(bucket:"") - |> range(start: -1h) - |> filter(fn: (r) => r._measurement == "stat") + |> range(start: -1h) + |> filter(fn: (r) => r._measurement == "stat") ``` The query client sends the Flux query to InfluxDB and returns the results as a FluxRecord object with a table structure. @@ -143,20 +140,22 @@ Use the Go library to query data to InfluxDB. - `Value`: Returns the actual field value. ```go - result, err := queryApi.Query(context.Background(), `from(bucket:"")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")`) - if err == nil { - for result.Next() { - if result.TableChanged() { - fmt.Printf("table: %s\n", result.TableMetadata().String()) - } - fmt.Printf("value: %v\n", result.Record().Value()) +result, err := queryAPI.Query(context.Background(), `from(bucket:"") + |> range(start: -1h) + |> filter(fn: (r) => r._measurement == "stat")`) +if err == nil { + for result.Next() { + if result.TableChanged() { + fmt.Printf("table: %s\n", result.TableMetadata().String()) } - if result.Err() != nil { - fmt.Printf("query parsing error: %s\n", result.Err().Error()) - } - } else { - panic(err) + fmt.Printf("value: %v\n", result.Record().Value()) } + if result.Err() != nil { + fmt.Printf("query parsing error: %s\n", result.Err().Error()) + } +} else { + panic(err) +} ``` **The FluxRecord object includes the following methods for accessing your data:** @@ -178,9 +177,9 @@ Use the Go library to query data to InfluxDB. // Create client client := influxdb2.NewClient(url, token) // Get query client - queryApi := client.QueryApi(org) + queryAPI := client.QueryAPI(org) // Get QueryTableResult - result, err := queryApi.Query(context.Background(), `from(bucket:"my-bucket")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")`) + result, err := queryAPI.Query(context.Background(), `from(bucket:"my-bucket")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")`) if err == nil { // Iterate over query response for result.Next() {