github.com/olivere/elastic怎么使用,用go里面写个curd
时间: 2024-09-24 11:29:10 浏览: 29
github.com/go-sql-driver/mysql
`github.com/olivere/elastic` 是一个用于与Elasticsearch进行交互的Go语言库,它提供了一种简单的方式来处理CRUD操作(Create、Read、Update、Delete)。要在Go程序中使用这个库,你需要先安装它:
```sh
go get github.com/olivere/elastic
```
下面是一个简单的例子,展示如何使用`olivere/elastic`来进行Elasticsearch的基本CRUD操作:
```go
package main
import (
"context"
"fmt"
"log"
"github.com/olivere/elastic/v7"
)
func main() {
client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200")) // 如果Elasticsearch在本地运行,这里就是它的地址
if err != nil {
log.Fatal(err)
}
index := "my_index" // 指定索引名称
doctype := "doc_type" // 或者你的文档类型
// 创建数据 (Create)
createRequest := elastic.NewIndexRequest().Index(index).Type(doctype).Body(map[string]interface{}{
"title": "My First Document",
"content": "This is a sample document.",
})
res, err := client.Index(createRequest).Do(context.TODO())
if err != nil {
log.Fatal(err)
fmt.Printf("Document created: %s\n", res.Id)
}
// 查询数据 (Read)
getRequest := elastic.NewGetRequest(index, res.Id).Fields("title") // 只获取标题字段
res, err = client.Get(getRequest).Do(context.TODO())
if err != nil && err != elastic.NotFoundError{} {
log.Fatal(err)
fmt.Printf("Document found: %v\n", res.Source)
}
// 更新数据 (Update)
updateRequest := elastic.NewUpdateRequest(index, res.Id).
Doc(map[string]interface{}{"content": "Updated content."})
_, err = client.Update(updateRequest).IfMatch(res.Version) // 设置版本匹配以防并发冲突
if err != nil {
log.Fatal(err)
fmt.Println("Document updated")
}
// 删除数据 (Delete)
deleteRequest := elastic.NewDeleteRequest(index, res.Id).Refresh(true) // 强制刷新查看结果
_, err = client.Delete(deleteRequest).Do(context.TODO())
if err != nil && err != elastic.NotFoundError{} {
log.Fatal(err)
fmt.Println("Document deleted")
}
}
```
阅读全文