在windows下如何搭建个人开发用的Elasticsearch和Kibana,下面的教程手把手教你如何配置,并且通过go-elasticsearch客户端连接Elasticsearch。首先你需要先在win10或者win11上安装docker。安装后跟着以下步骤一步步走就能搭建属于个人使用的ES。
一,打开powershell,下载elastic镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.4
二,第一次运行Elasticsearch容器,会生成用户密码和Kibana要用到的Token,保存好用户密码和token。用于在浏览器下Kibana登录
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安装与运行
拉取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 文档,可以进行数据库操作