使用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)
}