ZBLOG

golang 使用Elasticsearch数据库,增删改查数据

使用Golang连接Elasticsearch数据库可以使用第三方库,如olivere/elastic

首先需要安装该库:

go get github.com/olivere/elastic

然后在代码中引入该库:

import (
	"context"
	"fmt"
	"github.com/olivere/elastic/v7"
)

接下来就可以进行增删改查操作了。

连接数据库

ctx := context.Background()

client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))
if err != nil {
    panic(err)
}

插入数据

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

user := User{Name: "John", Age: 30}

_, err = client.Index().
    Index("users").
    BodyJson(user).
    Do(ctx)

if err != nil {
    panic(err)
}

查询数据

查询所有数据

res, err := client.Search().
        Index("users").
        Query(elastic.MatchAllQuery{}).
        Do(ctx)

if err != nil {
   panic(err)
}

var users []User
for _, hit := range res.Hits.Hits {
   var user User
   if err := json.Unmarshal(hit.Source, &user); err != nil {
       // handle error
   }
   users = append(users, user)
}
fmt.Printf("Found %d users\n", len(users))

根据条件查询数据

query := elastic.NewMatchQuery("name", "John")

res, err := client.Search().
        Index("users").
        Query(query).
        Do(ctx)

if err != nil {
   panic(err)
}

var users []User
for _, hit := range res.Hits.Hits {
   var user User
   if err := json.Unmarshal(hit.Source, &user); err != nil {
       // handle error
   }
   users = append(users, user)
}
fmt.Printf("Found %d users\n", len(users))

更新数据

update := elastic.NewUpdateRequest().
        Index("users").
        Id("1").
        Doc(map[string]interface{}{"age": 40})

_, err = client.Update(update).Do(ctx)

if err != nil {
    panic(err)
}

删除数据

delete := elastic.NewDeleteRequest().
        Index("users").
        Id("1")

_, err = client.Delete(delete).Do(ctx)

if err != nil {
    panic(err)
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4579

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?