贴一个作者代码实现的github仓库:go操作es的全部代码
1.es的连接
导入依赖:go get -u "github.com/olivere/elastic/v7"
var Client *elastic.Client
func EsConnect() {
client, err := elastic.NewClient(
elastic.SetURL("http://127.0.0.1:9200"),
elastic.SetSniff(false),
elastic.SetBasicAuth("elastic", "123456"))
if err != nil {
fmt.Println("连接失败:", err.Error())
return
}
Client = client
}
2.es的认证
- 认证情况:分析
- 无需认证
1.云服务器使用docker 搭建es,但是9200,9300端口不开放
2.本身跑在127.0.0.1上 - 需要认证:es需要对外提供服务的,比如说本机连接服务器的es
- 无需认证
- 给docker的es容器设置密码
- 进入es容器,修改配置文件:config/elasticsearch.yml,添加下列信息
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
- 重启es容器生效
docker restart es - 进入容器,输入./bin/elasticsearch-setup-passwords interactive,根据提示设置至少六位长度的密码。设置6种密码建议设置一样。
- 再次重启生效,用户名:elastic
-
网页访问
-
curl访问:curl -u elastic:123456 http://127.0.0.1:9200
-
-
3.索引操作
-
创建索引
-
用户实例
type User struct { ID uint jsom:"id" Name string jsom:"name" Nickname string jsom:"nick_name" CreatedAt time.Time jsom:"created_at" } func (u User) Mapping() string { return { "mappings":{ "properties":{ "nick_name":{ "type":"text" //分词 }, "name":{ "type":"keyword" //完全匹配 }, "id":{ "type":"integer" }, "created_at":{ "type":"date", "null_value":"null", "format":"[yyyy-MM-dd HH:mm:ss]" }
-