Cliente Elasticsearch para Go (Golang): una potente herramienta para trabajar con búsquedas
\n\nElasticsearch es un sistema de búsqueda y análisis distribuido basado en Apache Lucene que permite realizar búsquedas de texto completo, agregaciones y análisis en tiempo real. Para interactuar con Elasticsearch desde el lenguaje Go (Golang), existe un cliente oficial: go-elasticsearch. Esta es una biblioteca desarrollada y mantenida por el equipo de Elastic que proporciona un conjunto completo de herramientas para trabajar con la API REST de Elasticsearch.
\n\nCaracterísticas y ventajas de go-elasticsearch
\n\nLa biblioteca go-elasticsearch ofrece a los desarrolladores de Go las siguientes capacidades:
\n\n- \n
- Soporte completo de la API de Elasticsearch — todas las versiones de la API, incluyendo indexación, búsqueda, agregaciones, gestión del clúster y configuraciones. \n
- Funciones auxiliares tipadas — simplifican la creación de consultas y el procesamiento de respuestas. \n
- Soporte para operaciones bulk — inserción, actualización y eliminación masiva de documentos. \n
- Gestión automática de conexiones — pool de conexiones, reintentos en caso de errores y balanceo de carga. \n
- Compatibilidad con módulos Go — instalación y actualización sencillas mediante
go get. \n - Soporte de contextos (context) — cancelación de solicitudes y tiempos de espera. \n
- Extensibilidad — posibilidad de crear transportes y middleware personalizados. \n
Instalación y configuración
\n\nPara instalar la biblioteca, ejecute el comando:
\n\ngo get github.com/elastic/go-elasticsearch/v8\n\nDespués de la instalación, puede crear un cliente con configuraciones básicas:
\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("Error al crear el cliente: %s", err)\n }\n log.Println("Cliente Elasticsearch creado exitosamente")\n}\n\nPara conectarse a un clúster con autenticación, especifique el usuario y la contraseña:
\n\ncfg := elasticsearch.Config{\n Addresses: []string{"https://your-cluster-url:9200"},\n Username: "elastic",\n Password: "your_password",\n}\n\nOperaciones principales con datos
\n\nCreación de un índice
\n\nres, err := es.Indices.Create("my_index")\nif err != nil {\n log.Fatalf("Error al crear el índice: %s", err)\n}\ndefer res.Body.Close()\nlog.Println(res.String())\n\nIndexación de un documento
\n\nPara agregar un documento, use el método 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: "Guerra y paz",\n Author: "León Tolstói",\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("Error al indexar: %s", err)\n }\n defer res.Body.Close()\n log.Println(res.String())\n}\n\nBúsqueda de documentos
\n\nLa búsqueda se realiza mediante el método Search con el cuerpo de la consulta en formato JSON:
query := `{\n "query": {\n "match": {\n "author": "Tolstói"\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 También en la biblioteca
Prisma para TypeScript: guía completa con ejemplos
JMH en Java: guía completa con ejemplos prácticos
Autorización y autenticación en Rust: bibliotecas y herramientas
Trabajo con Excel en JavaScript (Node.js): bibliotecas y ejemplos de código