ZBLOG

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

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

创建索引

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

import (
    "context"
    "fmt"
    "github.com/elastic/go-elasticsearch/v7"
)

func main() {
	es, _ := elasticsearch.NewDefaultClient()

	mapping := `{
		"mappings": {
			"properties": {
				"name": { "type": "text" },
				"age":  { "type": "integer" }
			}
		}
	}`

	res, err := es.Indices.Create(
        []string{"my-index"},
        es.Indices.Create.WithBody(strings.NewReader(mapping)),
        es.Indices.Create.WithContext(context.Background()),
    )

	if err != nil {
	    log.Fatalf("Error creating index: %s", err)
	}

	defer res.Body.Close()

	fmt.Println("Index created")
}

删除索引

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

res, err := es.Indices.Delete(
    []string{"my-index"},
    es.Indices.Delete.WithContext(context.Background()),
)

if err != nil {
    log.Fatalf("Error deleting index: %s", err)
}

defer res.Body.Close()

fmt.Println("Index deleted")

添加文档

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

doc := `{
    "name": "John",
    "age": 30
}`

res, err := es.Index(
    "my-index",
    strings.NewReader(doc),
    es.Index.WithDocumentID("1"),
    es.Index.WithContext(context.Background()),
)

if err != nil {
    log.Fatalf("Error indexing document: %s", err)
}

defer res.Body.Close()

fmt.Println("Document added")

获取文档

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

res, err := es.Get(
    "my-index",
    "1",
    es.Get.WithContext(context.Background()),
)

if err != nil {
    log.Fatalf("Error getting document: %s", err)
}

defer res.Body.Close()

var r map[string]interface{}

if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
    log.Fatalf("Error parsing the response body: %s", err)
}

doc := r["_source"].(map[string]interface{})

fmt.Printf("Name: %s, Age: %d\n", doc["name"], int(doc["age"].(float64)))

更新文档

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

updateDoc := `{
	"doc": {
		"age": 35
	}
}`

res, err := es.Update(
    "my-index",
    "1",
    strings.NewReader(updateDoc),
    es.Update.WithContext(context.Background()),
)

if err != nil {
    log.Fatalf("Error updating document: %s", err)
}

defer res.Body.Close()

fmt.Println("Document updated")

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?