golang 使用elasticsearch 配置账号密码地址 并将数据上传上去
在golang中使用elasticsearch需要以下步骤:
- 安装elasticsearch客户端库
使用go get命令安装elasticsearch客户端库:
go get github.com/elastic/go-elasticsearch/v8
- 配置账号密码地址
在代码中配置账号密码和地址:
package main
import (
"context"
"fmt"
"github.com/elastic/go-elasticsearch/v8"
"github.com/elastic/go-elasticsearch/v8/esapi"
"log"
"strings"
)
func main() {
cfg := elasticsearch.Config{
Addresses: []string{
"http://localhost:9200",
},
Username: "elastic",
Password: "changeme",
}
es, err := elasticsearch.NewClient(cfg)
if err != nil {
log.Fatalf("Error creating the client: %s", err)
}
fmt.Println(es.Info())
}
- 将数据上传上去
使用esapi库中的Index API将数据上传到elasticsearch中:
package main
import (
"bytes"
"context"
"encoding/json"
"fmt"
"github.com/elastic/go-elasticsearch/v8"
"github.com/elastic/go-elasticsearch/v8/esapi"
"log"
"strings"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
cfg := elasticsearch.Config{
Addresses: []string{
"http://localhost:9200",
},
Username: "elastic",
Password: "changeme",
}
es, err := elasticsearch.NewClient(cfg)
if err != nil {
log.Fatalf("Error creating the client: %s", err)
}
fmt.Println(es.Info())
p := Person{
Name: "John",
Age: 30,
}
buf, err := json.Marshal(p)
if err != nil {
log.Fatalf("Error marshaling the data: %s", err)
}
req := esapi.IndexRequest{
Index: "people",
DocumentID: "1",
Body: bytes.NewReader(buf),
Refresh: "true",
}
res, err := req.Do(context.Background(), es)
if err != nil {
log.Fatalf("Error getting response: %s", err)
}
defer res.Body.Close()
var r map[string]interface{}
if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
log.Fatalf("Error parsing the response body: %s", err)
}
fmt.Println(r)
}
以上代码将一个Person的对象上传到了people索引中。
注意:在elasticsearch中,索引名和字段名都是小写,使用下划线连接。例如,Person结构体的Name字段在elasticsearch中应该使用name字段。
原文地址: https://www.cveoy.top/t/topic/vsV 著作权归作者所有。请勿转载和采集!