При выполнении запросов и управлении данными в кластерах Elasticsearch сервиса CSS разработчики иногда используют язык Go. В этом разделе описывается, как подключиться к кластеру Elasticsearch сервиса CSS с использованием Go.
Подключитесь к кластеру без режима безопасности. Пример кода приведён ниже:
1234567891011121314151617package mainimport ("github.com/elastic/go-elasticsearch/v7""log")func main() {cfg := elasticsearch.Config{Addresses: []string{"http://HOST:9200/",},}es, _ := elasticsearch.NewClient(cfg)log.Println(es.Info())}
В приведённой выше информации HOST указывает внутренний IP-адрес узла кластера.
Пример кода приведён ниже:
12345678910111213141516171819package mainimport ("github.com/elastic/go-elasticsearch/v7""log")func main() {cfg := elasticsearch.Config{Addresses: []string{"http://HOST:9200/",},Username: "USERNAME",Password: "PASSWORD",}es, _ := elasticsearch.NewClient(cfg)log.Println(es.Info())}
Параметр | Описание |
|---|---|
Хост | IP address для доступа к кластеру. Если указано несколько IP address, разделите их запятой (,). |
USERNAME | Имя пользователя для доступа к кластеру. |
PASSWORD | Пароль пользователя. |
Пример кода выглядит следующим образом:
1234567891011121314151617181920212223242526package mainimport ("crypto/tls""github.com/elastic/go-elasticsearch/v7""log""net/http")func main() {cfg := elasticsearch.Config{Addresses: []string{"https://HOST:9200/",},Username: "USERNAME",Password: "PASSWORD",Transport: &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true,},},}es, _ := elasticsearch.NewClient(cfg)log.Println(es.Info())}
Параметр | Описание |
|---|---|
Хост | IP address для доступа к кластеру. Если указано несколько IP address, разделите их запятой (,). |
USERNAME | Имя пользователя для доступа к кластеру. |
PASSWORD | Пароль пользователя. |
Пример кода приведён ниже:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package mainimport ("crypto/tls""crypto/x509""flag""github.com/elastic/go-elasticsearch/v7""io/ioutil""log""net""net/http""time")func main() {insecure := flag.Bool("insecure-ssl", false, "Accept/Ignore all server SSL certificates")flag.Parse()// Get the SystemCertPool, continue with an empty pool on errorrootCAs, _ := x509.SystemCertPool()if rootCAs == nil {rootCAs = x509.NewCertPool()}// Read in the cert filecerts, err := ioutil.ReadFile("/tmp/CloudSearchService.cer")if err != nil {log.Fatalf("Failed to append %q to RootCAs: %v", "xxx", err)}// Append our cert to the system poolif ok := rootCAs.AppendCertsFromPEM(certs); !ok {log.Println("No certs appended, using system certs only")}config := elasticsearch.Config{Addresses: []string{"https://HOST:9200/",},Username: "USERNAME",Password: "PASSWORD",Transport: &http.Transport{MaxIdleConnsPerHost: 10,ResponseHeaderTimeout: time.Second,DialContext: (&net.Dialer{Timeout: 30 * time.Second,KeepAlive: 30 * time.Second,}).DialContext,TLSClientConfig: &tls.Config{InsecureSkipVerify: *insecure,RootCAs: rootCAs,},},}es, _ := elasticsearch.NewClient(config)log.Println(elasticsearch.Version)log.Println(es.Info())}
Параметр | Описание |
|---|---|
HOST | IP-адрес для доступа к кластеру. Если указано несколько IP-адресов, разделите их запятой (,) . |
USERNAME | Имя пользователя для доступа к кластеру. |
PASSWORD | Пароль пользователя. |
Запишите приведённый выше код в файл EsTest.gc в соответствии с типом кластера и сохраните файл в отдельный каталог. Выполните следующую команду в этом каталоге для запуска кода:
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,directgo env -w GONOSUMDB=*go mod init testgo mod tidygo run EsTest.go
Если информация о кластере возвращена, кластер подключён.