前情提要
因为es从http升级到https了,所以需要修改golang程序里的log钩子,在新建elastic client时设置为https
官方给出的方法见:https://github.com/olivere/elastic/issues/738
elastic包使用的是默认的httpclient 需要传入自定义的httpclient
主要是设置http.client的 Transport
字段
代码实现
func newEsHook(cc cfg) *esHook {
// https
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr} // 自定义transport
//
es, err := elastic.NewClient(
elastic.SetHttpClient(client), // 设置上面自己的client
elastic.SetURL(cc.EsAddrs...),
elastic.SetBasicAuth(cc.EsUser, cc.EsPassword),
elastic.SetSniff(false),
elastic.SetHealthcheckInterval(15*time.Second),
elastic.SetErrorLog(log.New(os.Stderr, "ES:", log.LstdFlags)),
)
if err != nil {
log.Println("failed to create Elastic V6 Client: ", err)
}
return &esHook{client: es, cmd: strings.Join(os.Args, " ")}
}