The Elasticsearch client for golang uses info derived from the follow ES api call:
GET /_node/http
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html
Normally this call returns lot of information about the node including IP address but when making the call to the AWS service this information is missing. This causes the golang client to fail to be able to discover any nodes. Here are two examples which highlight the problem:
regular node i have running locally:
curl "http://localhost:9200/_nodes/http?pretty"
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "docker-cluster",
"nodes" : {
"hnsnurlLTG2-XbBQFyYg9w" : {
"name" : "16c3f8d15864",
"transport_address" : "172.25.0.4:9300",
"host" : "172.25.0.4",
"ip" : "172.25.0.4",
"version" : "7.8.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"roles" : [
"data",
"ingest",
"master",
"ml",
"remote_cluster_client",
"transform"
],
"attributes" : {
"ml.machine_memory" : "25225474048",
"xpack.installed" : "true",
"transform.node" : "true",
"ml.max_open_jobs" : "20"
},
"http" : {
"bound_address" : [
"0.0.0.0:9200"
],
"publish_address" : "172.25.0.4:9200",
"max_content_length_in_bytes" : 104857600
}
}
}
}
AWS equivalent:
curl -XGET https://vpc-address....amazonaws.com/_nodes/http?pretty
{
"_nodes" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"cluster_name" : "XXX",
"nodes" : {
"8oxT_9maSMif5iXoQptpKA" : {
"name" : "d026e0070020663bdd93028c2c801292",
"version" : "7.7.0",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "unknown",
"roles" : [ "ingest", "master", "data", "remote_cluster_client" ]
},
"8joBdfy6Q-aULryA3aP00w" : {
"name" : "3992f18f3b80c28fbb6d5b5624c4bdfe",
"version" : "7.7.0",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "unknown",
"roles" : [ "ingest", "master", "data", "remote_cluster_client" ]
},
"2v572nbWQK6zrXmwGUiRmQ" : {
"name" : "41d42ffdc2fdaf9c7a425e29c6ba92d6",
"version" : "7.7.0",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "unknown",
"roles" : [ "ingest", "master", "data", "remote_cluster_client" ]
}
}
}
Obviously there are going to be some differences local Vs AWS with things like plugins but returning the actually http information seems pretty fundemental no?