Documentation ¶
Overview ¶
Package elasticsearch provides a Go client for Elasticsearch.
Create the client with the NewDefaultClient function:
elasticsearch.NewDefaultClient()
The ELASTICSEARCH_URL environment variable is used instead of the default URL, when set. Use a comma to separate multiple URLs.
To configure the client, pass a Config object to the NewClient function:
cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", "http://localhost:9201", }, Username: "foo", Password: "bar", Transport: &http.Transport{ MaxIdleConnsPerHost: 10, ResponseHeaderTimeout: time.Second, DialContext: (&net.Dialer{Timeout: time.Second}).DialContext, TLSClientConfig: &tls.Config{ MinVersion: tls.VersionTLS11, }, }, } elasticsearch.NewClient(cfg)
When using the Elastic Service (https://elastic.co/cloud), you can use CloudID instead of Addresses. When either Addresses or CloudID is set, the ELASTICSEARCH_URL environment variable is ignored.
See the elasticsearch_integration_test.go file and the _examples folder for more information.
Call the Elasticsearch APIs by invoking the corresponding methods on the client:
res, err := es.Info() if err != nil { log.Fatalf("Error getting response: %s", err) } log.Println(res)
See the github.com/Tritura/go-elasticsearch/esapi package for more information about using the API.
See the github.com/Tritura/go-elasticsearch/estransport package for more information about configuring the transport.
Index ¶
Examples ¶
Constants ¶
const (
Version = version.Client
)
Version returns the package version as a string.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { *esapi.API // Embeds the API methods Transport estransport.Interface // contains filtered or unexported fields }
Client represents the Elasticsearch client.
func NewClient ¶
NewClient creates a new client with configuration from cfg.
It will use http://localhost:9200 as the default address.
It will use the ELASTICSEARCH_URL environment variable, if set, to configure the addresses; use a comma to separate multiple URLs.
If either cfg.Addresses or cfg.CloudID is set, the ELASTICSEARCH_URL environment variable is ignored.
It's an error to set both cfg.Addresses and cfg.CloudID.
Example ¶
cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, Username: "foo", Password: "bar", Transport: &http.Transport{ MaxIdleConnsPerHost: 10, ResponseHeaderTimeout: time.Second, DialContext: (&net.Dialer{Timeout: time.Second}).DialContext, TLSClientConfig: &tls.Config{ MinVersion: tls.VersionTLS11, }, }, } es, _ := elasticsearch.NewClient(cfg) log.Print(es.Transport.(*estransport.Client).URLs())
Output:
Example (Logger) ¶
// import "github.com/Tritura/go-elasticsearch/v8/estransport" // Use one of the bundled loggers: // // * estransport.TextLogger // * estransport.ColorLogger // * estransport.CurlLogger // * estransport.JSONLogger cfg := elasticsearch.Config{ Logger: &estransport.ColorLogger{Output: os.Stdout}, } elasticsearch.NewClient(cfg)
Output:
func NewDefaultClient ¶
NewDefaultClient creates a new client with default options.
It will use http://localhost:9200 as the default address.
It will use the ELASTICSEARCH_URL environment variable, if set, to configure the addresses; use a comma to separate multiple URLs.
Example ¶
es, err := elasticsearch.NewDefaultClient() if err != nil { log.Fatalf("Error creating the client: %s\n", err) } res, err := es.Info() if err != nil { log.Fatalf("Error getting the response: %s\n", err) } defer res.Body.Close() log.Print(es.Transport.(*estransport.Client).URLs())
Output:
func (*Client) DiscoverNodes ¶
DiscoverNodes reloads the client connections by fetching information from the cluster.
type Config ¶
type Config struct { Addresses []string // A list of Elasticsearch nodes to use. Username string // Username for HTTP Basic Authentication. Password string // Password for HTTP Basic Authentication. CloudID string // Endpoint for the Elastic Service (https://elastic.co/cloud). APIKey string // Base64-encoded token for authorization; if set, overrides username/password and service token. ServiceToken string // Service token for authorization; if set, overrides username/password. Header http.Header // Global HTTP request header. // PEM-encoded certificate authorities. // When set, an empty certificate pool will be created, and the certificates will be appended to it. // The option is only valid when the transport is not specified, or when it's http.Transport. CACert []byte RetryOnStatus []int // List of status codes for retry. Default: 502, 503, 504. DisableRetry bool // Default: false. EnableRetryOnTimeout bool // Default: false. MaxRetries int // Default: 3. CompressRequestBody bool // Default: false. DiscoverNodesOnStart bool // Discover nodes when initializing the client. Default: false. DiscoverNodesInterval time.Duration // Discover nodes periodically. Default: disabled. EnableMetrics bool // Enable the metrics collection. EnableDebugLogger bool // Enable the debug logging. DisableMetaHeader bool // Disable the additional "X-Elastic-Client-Meta" HTTP header. RetryBackoff func(attempt int) time.Duration // Optional backoff duration. Default: nil. Transport http.RoundTripper // The HTTP transport object. Logger estransport.Logger // The logger object. Selector estransport.Selector // The selector object. // Optional constructor function for a custom ConnectionPool. Default: nil. ConnectionPoolFunc func([]*estransport.Connection, estransport.Selector) estransport.ConnectionPool }
Config represents the client configuration.
Directories ¶
Path | Synopsis |
---|---|
Package esapi provides the Go API for Elasticsearch.
|
Package esapi provides the Go API for Elasticsearch. |
Package estransport provides the transport layer for the Elasticsearch client.
|
Package estransport provides the transport layer for the Elasticsearch client. |
Package esutil provides helper utilities to the Go client for Elasticsearch.
|
Package esutil provides helper utilities to the Go client for Elasticsearch. |
internal
|
|