Avec l'avènement de l'ère du Big Data, les gens accordent de plus en plus d'attention au traitement et au stockage des données. Dans de nombreux scénarios d'application, les données doivent être recherchées, analysées et interrogées. À cette époque, Elasticsearch (ES) est devenu un moteur de recherche et un moteur d'analyse populaire utilisé par de nombreuses entreprises et institutions. Lors de l'utilisation d'ES, comment implémenter l'interaction avec ES via Golang ? Cet article expliquera comment utiliser Golang pour demander l'interface ES sous les aspects suivants.
Tout d'abord, vous devez installer la langue Go et ES. Le premier peut être téléchargé et installé à partir du site officiel, et le second peut être téléchargé à partir du site officiel ou démarré à l'aide d'un conteneur. Dans cet article, nous utiliserons l'image Docker d'ES pour installer ES.
Afin de nous permettre d'utiliser plus facilement Golang pour interagir avec ES, ES fournit des bibliothèques client officielles. Vous pouvez utiliser la commande suivante pour installer la bibliothèque client Golang d'ES :
go get github.com/elastic/go-elasticsearch/v8
Remarque : lors de l'installation, vous devez utiliser la version de la branche v8
, car cette version prend en charge la version 7.x. d'ES. v8
分支的版本,因为该版本支持 ES 的 7.x 版本。
在使用 ES 前,需要连接到 ES 集群。ES 支持通过 HTTP 或 TCP 连接,HTTP 连接方式是最常用的方式。使用 Golang 连接到 ES 的示例代码如下:
package main import ( "context" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } _, err = es.Info() if err != nil { log.Fatalf("无法连接到ES集群:%s ", err) } fmt.Println("ES连接成功!") }
以上代码创建了 ES 客户端连接对象,然后连接到 ES 集群,通过调用 Info
方法检查是否连接成功。如果连接成功,会在控制台输出 ES连接成功!
。如果无法连接到 ES 集群,会在控制台输出相应的错误信息。
ES 提供了一系列的 API 来操作 ES 集群中的数据,包括索引操作、搜索、聚合等。在使用 API 时,需要注意相应的请求方法和请求路径、请求体等细节。
下面以搜索操作为例,示例代码如下:
package main import ( "context" "encoding/json" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" "strings" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } res, err := es.Search( es.Search.WithIndex("test_index"), es.Search.WithBody(strings.NewReader(`{"query":{"match_all":{}}}`)), es.Search.WithPretty(), ) if err != nil { log.Fatalf("搜索失败:%s ", err) } defer res.Body.Close() var r map[string]interface{} if err := json.NewDecoder(res.Body).Decode(&r); err != nil { log.Fatalf("无法解析响应体:%s ", err) } fmt.Println(r) }
以上代码创建了 ES 客户端连接对象,然后通过调用 Search
Info
méthode. Si la connexion est réussie, ES connexion réussie sera affiché sur la console !
. S'il ne parvient pas à se connecter au cluster ES, le message d'erreur correspondant sera affiché sur la console. 4. Utiliser l'API ES🎜🎜ES fournit une série d'API pour exploiter les données dans le cluster ES, y compris les opérations d'indexation, la recherche, l'agrégation, etc. Lorsque vous utilisez l'API, vous devez faire attention à la méthode de requête correspondante, au chemin de la requête, au corps de la requête et à d'autres détails. 🎜🎜Ce qui suit prend l'opération de recherche comme exemple. L'exemple de code est le suivant : 🎜rrreee🎜Le code ci-dessus crée l'objet de connexion client ES, puis effectue l'opération de recherche en appelant la méthode Search
. .Vous devez spécifier le nom de l'index et l'instruction de requête de recherche. Les résultats seront renvoyés au format JSON et des résultats de recherche pertinents pourront être obtenus en analysant les données JSON. 🎜🎜En plus des opérations de recherche, lorsque vous utilisez l'API ES, vous devez consulter les documents correspondants selon vos besoins et effectuer les traitements et ajustements correspondants en fonction du scénario réel. 🎜🎜5. Résumé🎜🎜Cet article explique comment utiliser Golang pour demander l'interface ES. En vous connectant au cluster ES et en utilisant l'API ES, vous pouvez facilement interagir avec ES et ajuster la méthode d'appel d'API correspondante en fonction des besoins réels pour réaliser des opérations telles que la recherche et l'agrégation de données dans le cluster ES. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!