ZBLOG

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

在 Go 中,可以使用官方 Elasticsearch 客户端库来进行索引和文档操作。以下是一些示例:

创建索引

  1. import (
  2. "context"
  3. "github.com/elastic/go-elasticsearch/v7"
  4. )
  5. func main() {
  6. es, _ := elasticsearch.NewDefaultClient()
  7. var mapping = `
  8. {
  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.WithPretty(),
  20. )
  21. if err != nil {
  22. log.Fatalf("Error creating index: %s", err)
  23. }
  24. }

删除索引

  1. res, err := es.Indices.Delete([]string{"my-index"}, es.Indices.Delete.WithPretty())
  2. if err != nil {
  3. log.Fatalf("Error deleting index: %s", err)
  4. }
  5. defer res.Body.Close()
  6. var r map[string]interface{}
  7. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  8. log.Printf("Error parsing the response body: %s", err)
  9. } else {
  10. fmt.Println(r["acknowledged"])
  11. }

插入文档

  1. doc := map[string]interface{}{
  2. "name": "John Doe",
  3. "age": 30,
  4. }
  5. // 使用自动生成的 ID 插入文档
  6. res, err := es.Index("my-index", doc)
  7. if err != nil {
  8. log.Fatalf("Error indexing document: %s", err)
  9. }
  10. defer res.Body.Close()
  11. var r map[string]interface{}
  12. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  13. log.Printf("Error parsing the response body: %s", err)
  14. } else {
  15. fmt.Println(r["_id"])
  16. }
  17. // 使用指定的 ID 插入文档
  18. res, err = es.Index("my-index", strings.NewReader(`{"name": "Jane Doe", "age": 25}`),
  19. es.Index.WithDocumentID("2"))
  20. if err != nil {
  21. log.Fatalf("Error indexing document: %s", err)
  22. }
  23. defer res.Body.Close()
  24. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  25. log.Printf("Error parsing the response body: %s", err)
  26. } else {
  27. fmt.Println(r["_id"])
  28. }

获取文档

  1. res, err := es.Get("my-index", "1")
  2. if err != nil {
  3. log.Fatalf("Error getting document: %s", err)
  4. }
  5. defer res.Body.Close()
  6. var r map[string]interface{}
  7. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  8. log.Printf("Error parsing the response body: %s", err)
  9. } else {
  10. source := r["_source"].(map[string]interface{})
  11. fmt.Println(source["name"], source["age"])
  12. }

更新文档

  1. doc := map[string]interface{}{
  2. "name": "John Smith",
  3. "age": 35,
  4. }
  5. res, err := es.Update(
  6. "my-index",
  7. "1",
  8. es.Update.WithDoc(doc),
  9. es.Update.WithRetryOnConflict(3),
  10. es.Update.WithPretty(),
  11. )
  12. if err != nil {
  13. log.Fatalf("Error updating document: %s", err)
  14. }
  15. defer res.Body.Close()
  16. var r map[string]interface{}
  17. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  18. log.Printf("Error parsing the response body: %s", err)
  19. } else {
  20. fmt.Println(r["_id"])
  21. }

删除文档

  1. res, err := es.Delete("my-index", "1")
  2. if err != nil {
  3. log.Fatalf("Error deleting document: %s", err)
  4. }
  5. defer res.Body.Close()
  6. var r map[string]interface{}
  7. if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
  8. log.Printf("Error parsing the response body: %s", err)
  9. } else {
  10. fmt.Println(r["_id"])
  11. }

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?