入门
编辑入门
编辑本页面指导您完成 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。