我遇到从Go客户端连接到es节点的问题。
我在设置基本身份验证的nginx代理后面有弹性搜索。 除了内存之外,所有设置都是ES中的默认设置。
通过浏览器它可以很好地工作,但不是通过这个客户端: https://github.com/olivere/elastic
我阅读了文档,并说它使用/ _nodes / http api进行连接。现在这可能是我做错了的地方,因为那个api的响应看起来像这样:
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "elasticsearch",
"nodes" : {
"u6TqFjAvRBa3_4FndfKh4w" : {
"name" : "u6TqFjA",
"transport_address" : "127.0.0.1:9300",
"host" : "127.0.0.1",
"ip" : "127.0.0.1",
"version" : "5.6.2",
"build_hash" : "57e20f3",
"roles" : [
"master",
"data",
"ingest"
],
"http" : {
"bound_address" : [
"[::1]:9200",
"127.0.0.1:9200"
],
"publish_address" : "127.0.0.1:9200",
"max_content_length_in_bytes" : 104857600
}
}
}
}
我猜我必须将IP设置为我的实际IP /域(我的域名就像es01.somedomain.com)
那么我如何正确配置弹性系统以便我的客户端可以连接?
我的nginx配置文件与此类似:https://www.elastic.co/blog/playing-http-tricks-nginx
编辑:我通过在客户端的选项中设置elastic.SetSniff(false)找到了一个临时解决方案,但我认为这意味着我无法水平扩展ES。所以还在寻找替代方案。
答案 0 :(得分:1)
您正在寻找HTTP options,特别是http.publish_host
和http.publish_port
,它们应设置为代理ES节点的Nginx服务器的可公开访问的地址和端口。
请注意,对于传输,Elasticsearch在127.0.0.1:9300上进行侦听,您将无法在其他主机上形成包含节点的群集。可以使用transport options类似地配置传输。