-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Ping
The Ping
service connects to an Elasticsearch server (http://127.0.0.1:9200
by default, see below) and gets e.g. the version number.
// Ping the Elasticsearch server to get e.g. the version number
ctx := context.Background()
info, code, err := client.Ping().Do(ctx)
if err != nil {
// Handle error
panic(err)
}
fmt.Printf("Elasticsearch returned with code %d and version %s", code, info.Version.Number)
Notice: In elastic v2, the Ping
service is special in that it doesn't use the URLs of the client but the one specified via the URL
function of the PingService
(which is http://127.0.0.1:9200
by default).
So to use the PingService
in v2 correctly, specify the URL directly:
info, code, err := client.Ping().URL("<es-node-url>").Do(ctx)
...
The reason for this special behavior are as follows: First, you typically use Ping
to not only find nodes in your current cluster, but also nodes outside your Elasticsearch cluster. Second, you can specify many URLs for your cluster and Elastic happily does round-robin to load balance between the nodes. If you use many URLs, which one do you use by default for the PingService
? Third, pinging is for individual nodes, not for a cluster. Use the Cluster API, e.g. ClusterState
or ClusterHealth
to get information about your cluster (and its individual nodes).
Anyway, just specify a URL with your Ping and you should be fine. :-)
As this is probably the no. 1 question asked via GitHub issues, the behavior of Ping
has changed in elastic v3. In v3 and later, you always have to specify the URL of the server you want to Ping in the PingService
:
// Always specify the URL with elastic.v3 or later
info, code, err := client.Ping("<es-node-url>").Do(ctx)
...