在golang中使用elasticsearch需要以下步骤:

  1. 安装elasticsearch客户端库

使用go get命令安装elasticsearch客户端库:

go get github.com/elastic/go-elasticsearch/v8
  1. 配置账号密码地址

在代码中配置账号密码和地址:

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())
}
  1. 将数据上传上去

使用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字段。

golang 使用elasticsearch 配置账号密码地址 并将数据上传上去

原文地址: https://www.cveoy.top/t/topic/vsV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录