老师,新版的es8默认是https连接,要怎么调整go客户端呢?

来源:6-6 Go操作ES的一些技巧和注意事项(一)

杂货搬运工

2022-07-28

我的集群启用了https,现在go客户端连接不上,要怎么设置证书呢?
写回答

1回答

少林码僧

2022-07-28

在 7-2 项目环境说明 (17:59) 这小节视频中有讲解过,核心在于两个地方
1. 在项目中初始化需要带上 es.WithScheme("https") 设置项

初始化的完整代码如下:

//初始化ES
func initESClient() {
   err := es.InitClientWithOptions(es.DefaultClient, global.CONFIG.Elasticsearch.Hosts,
      global.CONFIG.Elasticsearch.Username,
      global.CONFIG.Elasticsearch.Password,
      es.WithScheme("https"))
   if err != nil {
      global.LOG.Error("InitClientWithOptions error", err, "client", es.DefaultClient)
      panic(err)
   }
   global.ES = es.GetClient(es.DefaultClient)
}

2. 如何实现Go sdk对https链接的支持
可以查看我们封装的SDK中的具体实现:
具体代码: https://gitee.com/phper95/pkg/blob/master/es/client.go

首先我们定义了用于支持https链接的http client

func getDefaultClient() *http.Client {
   tr := &http.Transport{
      DisableKeepAlives: true,
      TLSClientConfig:   &tls.Config{InsecureSkipVerify: true},
   }
   return &http.Client{Transport: tr}
}

在 InitClientWithOptions 函数中我们我们判断了是否设置了scheme,如果设置了,我们就使用上面定义的http client

if (opt.Scheme) > {
   esOptions = (esOptions.(opt.Scheme))
   esOptions = (esOptions.(()))
   esOptions = (esOptions.())
}


1
0

海量数据高并发场景,构建Go+ES8企业级搜索微服务

全新 ES8 配合技术组件,实现高性能搜索

278 学习 · 55 问题

查看课程