package config import ( "crypto/tls" "net" "net/http" "os" "time" "github.com/elastic/go-elasticsearch/v8" "github.com/sirupsen/logrus" ) var ( Elastic *elasticsearch.Client ) func ExistElastic() bool { if Elastic == nil { return false } return true } func GetElastic() *elasticsearch.Client { if Elastic == nil { panic("elastic没有初始化") } return Elastic } func InitElastic() { if os.Getenv("ELASTIC_ADDR") == "" { logrus.Warn("没有配置elastic,跳过初始化...") return } nt := &net.Dialer{Timeout: time.Second * 10} client, err := elasticsearch.NewClient(elasticsearch.Config{ Addresses: []string{os.Getenv("ELASTIC_ADDR")}, Username: os.Getenv("ELASTIC_USERNAME"), Password: os.Getenv("ELASTIC_PASSWORD"), Transport: &http.Transport{ MaxIdleConnsPerHost: 10, ResponseHeaderTimeout: time.Second * 10, DialContext: nt.DialContext, TLSClientConfig: &tls.Config{ MinVersion: tls.VersionTLS12, InsecureSkipVerify: true, //添加这一行跳过验证 }, }, }) if err != nil { logrus.Warnf("连接elastic[%v]不成功, err:%+v", os.Getenv("ELASTIC_ADDR"), err) return } if _, err = client.Info(); err != nil { logrus.Warnf("连接elastic[%v]不成功, getting response err:%+v", os.Getenv("ELASTIC_ADDR"), err) return } Elastic = client }