ZBLOG

golang es go驱动包操作,索引以及文档操作

在 Go 中,可以使用官方 Elasticsearch 客户端库来进行索引和文档操作。

创建索引

创建一个新的索引,需要指定名称和映射。以下是一个示例:

  1. import (
  2. "context"
  3. "fmt"
  4. "github.com/elastic/go-elasticsearch/v7"
  5. )
  6. func main() {
  7. es, _ := elasticsearch.NewDefaultClient()
  8. mapping := `{
  9. "mappings": {
  10. "properties": {
  11. "name": { "type": "text" },
  12. "age": { "type": "integer" }
  13. }
  14. }
  15. }`
  16. res, err := es.Indices.Create(
  17. []string{"my-index"},
  18. es.Indices.Create.WithBody(strings.NewReader(mapping)),
  19. es.Indices.Create.WithContext(context.Background()),
  20. )
  21. if err != nil {
  22. log.Fatalf("Error creating index: %s", err)
  23. }
  24. defer res.Body.Close()
  25. fmt.Println("Index created")
  26. }

删除索引

删除一个已存在的索引,只需要指定名称即可。以下是一个示例:

  1. res, err := es.Indices.Delete(
  2. []string{"my-index"},
  3. es.Indices.Delete.WithContext(context.Background()),
  4. )
  5. if err != nil {
  6. log.Fatalf("Error deleting index: %s", err)
  7. }
  8. defer res.Body.Close()
  9. fmt.Println("Index deleted")

添加文档

向指定的索引中添加文档,需要指定文档 ID 和文档内容。以下是一个示例:

  1. doc := `{
  2. "name": "John",
  3. "age": 30
  4. }`
  5. res, err := es.Index(
  6. "my-index",
  7. strings.NewReader(doc),
  8. es.Index.WithDocumentID("1"),
  9. es.Index.WithContext(context.Background()),
  10. )
  11. if err != nil {
  12. log.Fatalf("Error indexing document: %s", err)
  13. }
  14. defer res.Body.Close()
  15. fmt.Println("Document added")

获取文档

从指定的索引中获取文档,需要指定文档 ID。以下是一个示例:

  1. res, err := es.Get(
  2. "my-index",
  3. "1",
  4. es.Get.WithContext(context.Background()),
  5. )
  6. if err != nil {
  7. log.Fatalf("Error getting document: %s", err)
  8. }
  9. defer res.Body.Close()
  10. var r map[string]interface{}
  11. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  12. log.Fatalf("Error parsing the response body: %s", err)
  13. }
  14. doc := r["_source"].(map[string]interface{})
  15. fmt.Printf("Name: %s, Age: %d\n", doc["name"], int(doc["age"].(float64)))

更新文档

更新一个已存在的文档,需要指定文档 ID 和更新内容。以下是一个示例:

  1. updateDoc := `{
  2. "doc": {
  3. "age": 35
  4. }
  5. }`
  6. res, err := es.Update(
  7. "my-index",
  8. "1",
  9. strings.NewReader(updateDoc),
  10. es.Update.WithContext(context.Background()),
  11. )
  12. if err != nil {
  13. log.Fatalf("Error updating document: %s", err)
  14. }
  15. defer res.Body.Close()
  16. fmt.Println("Document updated")

以上是在 Go 中使用官方 Elasticsearch 客户端库进行索引和文档操作的一些示例。可以根据具体需求来选择合适的选项和参数。

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?