Client Elasticsearch pour Go (Golang) : un outil puissant pour travailler avec la recherche
\n\nElasticsearch est un système de recherche et d'analyse distribué basé sur Apache Lucene, qui permet d'effectuer des recherches en texte intégral, des agrégations et des analyses en temps réel. Pour interagir avec Elasticsearch depuis le langage Go (Golang), il existe un client officiel — go-elasticsearch. Il s'agit d'une bibliothèque développée et maintenue par l'équipe Elastic, qui offre un ensemble complet d'outils pour travailler avec l'API REST d'Elasticsearch.
\n\nFonctionnalités et avantages de go-elasticsearch
\n\nLa bibliothèque go-elasticsearch offre aux développeurs Go les fonctionnalités suivantes :
\n\n- \n
- Prise en charge complète de l'API Elasticsearch — toutes les versions de l'API, y compris l'indexation, la recherche, les agrégations, la gestion du cluster et des paramètres. \n
- Fonctions auxiliaires typées — simplifient la création de requêtes et le traitement des réponses. \n
- Prise en charge des opérations bulk — insertion, mise à jour et suppression massives de documents. \n
- Gestion automatique des connexions — pool de connexions, tentatives en cas d'erreur et équilibrage de charge. \n
- Compatibilité avec les modules Go — installation et mise à jour faciles via
go get. \n - Prise en charge des contextes (context) — annulation des requêtes et délais d'attente. \n
- Extensibilité — possibilité de créer ses propres transports et middleware. \n
Installation et configuration
\n\nPour installer la bibliothèque, exécutez la commande :
\n\ngo get github.com/elastic/go-elasticsearch/v8\n\nAprès l'installation, vous pouvez créer un client avec les paramètres de base :
\n\npackage main\n\nimport (\n "log"\n "github.com/elastic/go-elasticsearch/v8"\n)\n\nfunc main() {\n cfg := elasticsearch.Config{\n Addresses: []string{\n "http://localhost:9200",\n },\n }\n es, err := elasticsearch.NewClient(cfg)\n if err != nil {\n log.Fatalf("Erreur lors de la création du client : %s", err)\n }\n log.Println("Client Elasticsearch créé avec succès")\n}\n\nPour vous connecter à un cluster avec authentification, indiquez le nom d'utilisateur et le mot de passe :
\n\ncfg := elasticsearch.Config{\n Addresses: []string{"https://your-cluster-url:9200"},\n Username: "elastic",\n Password: "your_password",\n}\n\nOpérations principales avec les données
\n\nCréation d'un index
\n\nres, err := es.Indices.Create("my_index")\nif err != nil {\n log.Fatalf("Erreur lors de la création de l'index : %s", err)\n}\ndefer res.Body.Close()\nlog.Println(res.String())\n\nIndexation d'un document
\n\nPour ajouter un document, utilisez la méthode Index :
package main\n\nimport (\n "bytes"\n "encoding/json"\n "log"\n "github.com/elastic/go-elasticsearch/v8"\n)\n\ntype Book struct {\n Title string `json:"title"`\n Author string `json:"author"`\n Year int `json:"year"`\n}\n\nfunc main() {\n es, _ := elasticsearch.NewClient(elasticsearch.Config{\n Addresses: []string{"http://localhost:9200"},\n })\n\n book := Book{\n Title: "Guerre et Paix",\n Author: "Léon Tolstoï",\n Year: 1869,\n }\n\n data, _ := json.Marshal(book)\n res, err := es.Index("books", bytes.NewReader(data))\n if err != nil {\n log.Fatalf("Erreur d'indexation : %s", err)\n }\n defer res.Body.Close()\n log.Println(res.String())\n}\n\nRecherche de documents
\n\nLa recherche s'effectue via la méthode Search avec un corps de requête au format JSON :
query := `{\n "query": {\n "match": {\n "author": "Tolstoï"\n }\n }\n}`\n\nres, err := es.Search(\n es.Search.WithIndex("books"),\n es.Search.WithBody(bytes.NewReader([]byte(query))),\n es.Search.WithPretty(),\n)\nif err Aussi dans la bibliothèque
Géolocalisation et cartes en C++ : aperçu des bibliothèques et outils
SDK Firebase Android pour Kotlin : guide complet avec exemples
Packages Spatie pour PHP : guide complet avec exemples