在windows下如何搭建个人开发用的Elasticsearch和Kibana,下面的教程手把手教你如何配置,并且通过go-elasticsearch客户端连接Elasticsearch。首先你需要先在win10或者win11上安装docker。安装后跟着以下步骤一步步走就能搭建属于个人使用的ES。

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.4
docker run --name es01 -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.13.4

elastic成功运行后会生成以下密码和token,后面会使用到,可以保存到记事本先。

如果忘记了密码和token,可以通过以下命令重新生成

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

注意:将 http_ca.crt SSL 证书从容器复制到本地计算机。Go client Api 调用会用到证书

docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

拉取Kibana Docker 镜像并运行

docker pull docker.elastic.co/kibana/kibana:8.13.4
docker run --name kib01 -p 5601:5601 docker.elastic.co/kibana/kibana:8.13.4

打开浏览器,输入图上生成的地址: http://0.0.0.0:5601/?code=479380,记得带上code,不然输入token后会让你输入code,可以看到Kibana管理界面,输入前面生成的token和用户(elastic)密码,就可以进入管理界面

通过以上步骤,Elasticsearch和Kibana已经顺利运行起来了。接下来演示怎么通过Go Client 连接Elasticsearch,首先导入go-elasticsearch

require github.com/elastic/go-elasticsearch/v8 8.5

从版本 8.0 开始,Elasticsearch 默认提供安全性,并启用身份验证和 TLS。当您第一次启动 Elasticsearch 时,您会在 Elasticsearch 的输出中看到一个明显的块,如下所示(如果已经有一段时间了,您可能需要向上滚动)。

----------------------------------------------------------------
-> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.
->  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  lhQpLELkjkrawaBoaz0Q
->  HTTP CA certificate SHA-256 fingerprint:
  a52dd93511e8c6045e21f16654b77c9ee0f34aea26d9f40320b531c474676228
...
----------------------------------------------------------------

根据具体情况,有两种方法可用于验证 HTTPS 连接:使用 CA 证书本身进行验证或通过 HTTP CA 证书指纹进行验证。CA证书在前面的步骤已经导出到本机。本文采用证书验证的方式举例,其他方式可以参考Elastcisearch官网文档

package main

import (
	"context"
	"fmt"
	"github.com/elastic/go-elasticsearch/v8"
	"os"
)

func main() {
	cert, _ := os.ReadFile("C:\\Users\\admin/http_ca.crt")

	cfg := elasticsearch.Config{
		Addresses: []string{
			"https://localhost:9200",
		},
		Username: "elastic",
		Password: "tAoZMpV+m+V-0QMcnErV",
		CACert:   cert,
	}
	es, err := elasticsearch.NewClient(cfg)
	if err != nil {
		panic(err)
	}
	info, err := es.Info()
	if err != nil {
		return
	}
	fmt.Println(info)
}

点击运行,运行结果如下:

运行结果显示连接成功,至此我们已经可以通过Go Client 去访问ElasticSearchgo-elasticsearch,通过查看go-elasticsearch API 文档,可以进行数据库操作

By Tim

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注