Облачная платформаAdvanced

Подключение к кластеру с использованием Go

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

При выполнении запросов и управлении данными в кластерах Elasticsearch сервиса CSS разработчики иногда используют язык Go. В этом разделе описывается, как подключиться к кластеру Elasticsearch сервиса CSS с использованием Go.

Требования

  • Целевой кластер Elasticsearch доступен.
  • Сервер, на котором работает Go, может взаимодействовать с кластером Elasticsearch.
  • В зависимости от используемого метода настройки сети получите адрес доступа к кластеру. Подробнее см. Obtaining the Cluster Access Address.
  • Клиент Elasticsearch Go установлен на сервере. Подробнее см. Elasticsearch Go Client.

Подключение к кластеру без режима безопасности

Подключитесь к кластеру без режима безопасности. Пример кода приведён ниже:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17package main
import (
"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-адрес узла кластера.

Подключение к кластеру в режиме безопасности, использующему HTTP

Пример кода приведён ниже:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19package main
import (
"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())
}

Table 1 Переменные

Параметр

Описание

Хост

IP address для доступа к кластеру. Если указано несколько IP address, разделите их запятой (,).

USERNAME

Имя пользователя для доступа к кластеру.

PASSWORD

Пароль пользователя.

Подключение к Security-Mode Cluster, использующему HTTPS (без сертификата)

Пример кода выглядит следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26package main
import (
"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())
}

Table 2 Variables

Параметр

Описание

Хост

IP address для доступа к кластеру. Если указано несколько IP address, разделите их запятой (,).

USERNAME

Имя пользователя для доступа к кластеру.

PASSWORD

Пароль пользователя.

Подключение к кластеру в режиме Security-Mode, использующему HTTPS (с сертификатом)

Пример кода приведён ниже:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58package main
import (
"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 error
rootCAs, _ := x509.SystemCertPool()
if rootCAs == nil {
rootCAs = x509.NewCertPool()
}
// Read in the cert file
certs, 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 pool
if 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())
}
Table 3 Переменные

Параметр

Описание

HOST

IP-адрес для доступа к кластеру. Если указано несколько IP-адресов, разделите их запятой (,) .

USERNAME

Имя пользователя для доступа к кластеру.

PASSWORD

Пароль пользователя.

Запуск кода

Запишите приведённый выше код в файл EsTest.gc в соответствии с типом кластера и сохраните файл в отдельный каталог. Выполните следующую команду в этом каталоге для запуска кода:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
go env -w GONOSUMDB=*
go mod init test
go mod tidy
go run EsTest.go

Если информация о кластере возвращена, кластер подключён.