入门
编辑入门编辑
本页将引导您完成 Go 客户端的安装过程,并向您展示如何实例化客户端以及如何使用它执行基本的 Elasticsearch 操作。您可以将客户端与低级 API 或完全类型化的 API 一起使用。本入门指南将向您展示两种 API 的示例。
要求编辑
Go 版本 1.21+
安装编辑
要安装最新版本的客户端,请运行以下命令
go get github.com/elastic/go-elasticsearch/v8@latest
请参阅 安装 页面以了解更多信息。
连接编辑
您可以使用 API 密钥和 Elasticsearch 端点连接到 Elastic Cloud,以使用低级 API
client, err := elasticsearch.NewClient(elasticsearch.Config{ CloudID: "<CloudID>", APIKey: "<ApiKey>", })
您可以使用 API 密钥和 Elasticsearch 端点连接到 Elastic Cloud,以使用完全类型化的 API
typedClient, err := elasticsearch.NewTypedClient(elasticsearch.Config{ CloudID: "<CloudID>", APIKey: "<ApiKey>", })
您可以在部署的 我的部署 页面上找到您的 Elasticsearch 端点
您可以在安全下的 管理 页面上生成 API 密钥。
有关其他连接选项,请参阅 连接 部分。
操作编辑
现在开始使用 Elasticsearch!本节将引导您完成 Elasticsearch 的基本操作和最重要的操作。有关更多操作和更高级的示例,请参阅 示例 页面。
创建索引编辑
这是使用低级 API 创建 my_index
索引的方法
client.Indices.Create("my_index")
这是使用完全类型化的 API 创建 my_index
索引的方法
typedClient.Indices.Create("my_index").Do(context.TODO())
索引文档编辑
这是使用低级 API 索引文档的简单方法
document := struct { Name string `json:"name"` }{ "go-elasticsearch", } data, _ := json.Marshal(document) client.Index("my_index", bytes.NewReader(data))
这是使用完全类型化的 API 索引文档的简单方法
document := struct { Name string `json:"name"` }{ "go-elasticsearch", } typedClient.Index("my_index"). Id("1"). Request(document). Do(context.TODO())
获取文档编辑
您可以使用以下代码使用低级 API 获取文档
client.Get("my_index", "id")
这是使用完全类型化的 API 获取文档的方法
typedClient.Get("my_index", "id").Do(context.TODO())
搜索文档编辑
这是使用低级 API 创建单个匹配查询的方法
query := `{ "query": { "match_all": {} } }` client.Search( client.Search.WithIndex("my_index"), client.Search.WithBody(strings.NewReader(query)), )
这是使用完全类型化的 API 执行单个匹配查询的方法
typedClient.Search(). Index("my_index"). Request(&search.Request{ Query: &types.Query{MatchAll: &types.MatchAllQuery{}}, }). Do(context.TODO())
更新文档编辑
这是使用低级 API 更新文档(例如添加新字段)的方法
client.Update("my_index", "id", strings.NewReader(`{doc: { language: "Go" }}`))
这是使用完全类型化的 API 更新文档的方法
typedClient.Update("my_index", "id"). Request(&update.Request{ Doc: json.RawMessage(`{ language: "Go" }`), }).Do(context.TODO())
删除文档编辑
client.Delete("my_index", "id")
typedClient.Delete("my_index", "id").Do(context.TODO())
删除索引编辑
client.Indices.Delete([]string{"my_index"})
typedClient.Indices.Delete("my_index").Do(context.TODO())
进一步阅读编辑
- 了解有关 类型化 API 的更多信息,这是一个针对 Elasticsearch 的强类型 Golang API。