Go使用elasticsearch/v8客户端连接ES7.5.2报未知产品错误如何解决?
问题原因
这个错误是官方Elasticsearch客户端版本和服务端版本不匹配导致的:
- 你本地部署的Elasticsearch是7.5.2版本,该版本发布时间早于2021年,服务端响应不会携带
X-Elastic-Product响应头 - 你使用的v8版本Go Elasticsearch客户端是Elastic调整许可协议后发布的版本,默认强制校验服务端响应头的
X-Elastic-Product字段,校验不通过就会抛出该错误
解决方案
你可以任选以下一种方案解决:
- 方案1:更换与服务端大版本匹配的Go客户端
你使用的是7.x版本Elasticsearch,将客户端依赖替换为v7版本即可:
原有初始化逻辑不需要修改,v7版本客户端不会强制校验该响应头。import "github.com/elastic/go-elasticsearch/v7" - 方案2:保留v8客户端,关闭产品校验
初始化客户端时主动关闭产品校验逻辑,代码示例:package main import ( "testing" "github.com/elastic/go-elasticsearch/v8" ) func Test_elastic(t *testing.T) { cfg := elasticsearch.Config{ Addresses: []string{"http://localhost:9200"}, // 关闭产品校验 DisableProductCheck: true, } es, err := elasticsearch.NewClient(cfg) if err != nil { panic(err) } res, err := es.Info() if err != nil { panic(err) } defer res.Body.Close() } - 方案3:升级Elasticsearch服务端版本
将本地部署的Elasticsearch升级到7.14+或者8.x版本,服务端会自动返回X-Elastic-Product: Elasticsearch响应头,即可通过客户端校验。
内容的提问来源于stack exchange,提问作者O. San
相关产品推荐
相关产品推荐

