Introducción
Elasticsearch es un potente sistema de búsqueda distribuido basado en Apache Lucene, diseñado para búsqueda de texto completo, registro de eventos, monitoreo y análisis de grandes volúmenes de datos. Para integrarlo con Python se utiliza el cliente oficial elasticsearch-py, que brinda acceso completo a todas las API de Elasticsearch desde código Python.
La librería elasticsearch-py permite a los desarrolladores implementar búsquedas avanzadas, agregaciones y procesamiento de grandes volúmenes de datos directamente en aplicaciones Python, incluyendo servicios web, herramientas analíticas y sistemas de monitoreo.
Descripción de la librería elasticsearch-py
Elasticsearch-py es el cliente oficial de Python para trabajar con Elasticsearch. La librería proporciona acceso de bajo nivel a todas las funciones de Elasticsearch a través de la API RESTful, ofreciendo una interfaz Python cómoda y eficiente.
Características principales de la librería:
- Soporte oficial: Desarrollada y mantenida por el equipo de Elastic
- Compatibilidad total: Soporta todas las versiones de Elasticsearch
- Detección automática de nodos: Puede detectar y conectarse automáticamente a los nodos del clúster
- Pool de conexiones: Gestión eficiente de las conexiones con el clúster
- Manejo de errores: Sistema integrado de gestión de excepciones
- Serialización: Conversión automática de objetos Python a JSON
Instalación y conexión al clúster
Instalación
pip install elasticsearch
Para trabajar con certificados SSL:
pip install elasticsearch[async]
Conexión a un clúster local
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200")
Conexión a un clúster remoto con autenticación
es = Elasticsearch(
"https://your-cluster:9200",
basic_auth=("user", "password"),
verify_certs=True
)
Conexión usando claves API
es = Elasticsearch(
"https://your-cluster:9200",
api_key="your_api_key",
verify_certs=True
)
Conexión a múltiples nodos
es = Elasticsearch(
[
"https://node1:9200",
"https://node2:9200",
"https://node3:9200"
],
basic_auth=("user", "password")
)
Conceptos fundamentales de Elasticsearch
- Índice — equivalente a una tabla en bases de datos relacionales, contiene documentos con estructura similar
- Documento — objeto JSON almacenado en un índice, equivalente a un registro en una tabla
- Campo — atributo de un documento, equivalente a una columna en una tabla
- Mapeo (mapping) — descripción de la estructura del documento y los tipos de campos
- Shard — unidad física de almacenamiento de datos del índice
- Réplica — copia de un shard para garantizar tolerancia a fallos
Gestión de índices
Creación de índices y esquemas
mapping = {
"mappings": {
"properties": {
"title": {"type": "text", "analyzer": "spanish"},
"tags": {"type": "keyword"},
"published": {"type": "date"},
"content": {"type": "text"},
"author": {"type": "keyword"},
"views": {"type": "integer"}
}
},
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
es.indices.create(index="articles", body=mapping)
Eliminación de un índice
es.indices.delete(index="articles")
También en la biblioteca
Migraciones de bases de datos en Kotlin: Resumen de herramientas y enfoques
Rector para PHP: guía completa con ejemplos prácticos
Procesamiento de JSON en Kotlin: bibliotecas, análisis y serialización
Mockery para Go: guía completa con ejemplos prácticos
Aprendizaje automático en C++: descripción general de las bibliotecas clave