Introdução
O Elasticsearch é um poderoso sistema de busca distribuído baseado no Apache Lucene, projetado para busca em texto completo, logging, monitoramento e análise de grandes volumes de dados. Para integração com Python, utiliza-se o cliente oficial elasticsearch-py, que fornece acesso completo a todas as APIs do Elasticsearch através de código Python.
A biblioteca elasticsearch-py permite que desenvolvedores implementem buscas avançadas, agregações e processamento de grandes volumes de dados diretamente em aplicações Python, incluindo serviços web, ferramentas analíticas e sistemas de monitoramento.
Descrição da biblioteca elasticsearch-py
Elasticsearch-py é o cliente Python oficial para trabalhar com Elasticsearch. A biblioteca fornece acesso de baixo nível a todas as funcionalidades do Elasticsearch através da API RESTful, oferecendo uma interface Python conveniente.
Principais características da biblioteca:
- Suporte oficial: Desenvolvida e mantida pela equipe do Elastic
- Compatibilidade total: Suporta todas as versões do Elasticsearch
- Descoberta automática de nós: Pode detectar e conectar-se automaticamente aos nós do cluster
- Pools de conexão: Gerenciamento eficiente de conexões com o cluster
- Tratamento de erros: Sistema integrado de tratamento de exceções
- Serialização: Conversão automática de objetos Python para JSON
Instalação e conexão ao cluster
Instalação
pip install elasticsearch
Para trabalhar com certificados SSL:
pip install elasticsearch[async]
Conexão a um cluster local
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200")
Conexão a um cluster remoto com autenticação
es = Elasticsearch(
"https://your-cluster:9200",
basic_auth=("user", "password"),
verify_certs=True
)
Conexão usando chaves de API
es = Elasticsearch(
"https://your-cluster:9200",
api_key="your_api_key",
verify_certs=True
)
Conexão a múltiplos nós
es = Elasticsearch(
[
"https://node1:9200",
"https://node2:9200",
"https://node3:9200"
],
basic_auth=("user", "password")
)
Conceitos fundamentais do Elasticsearch
- Índice — análogo a uma tabela em bancos relacionais, contém documentos de estrutura semelhante
- Documento — objeto JSON armazenado em um índice, análogo a um registro em uma tabela
- Campo — atributo de um documento, análogo a uma coluna em uma tabela
- Mapeamento (mapping) — descrição da estrutura do documento e tipos dos campos
- Shard — unidade física de armazenamento de dados do índice
- Réplica — cópia de um shard para garantir tolerância a falhas
Gerenciamento de índices
Criação de índices e esquemas
mapping = {
"mappings": {
"properties": {
"title": {"type": "text", "analyzer": "portuguese"},
"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)
Exclusão de um índice
es.indices.delete(index Também na biblioteca
Air para Go: guia completo com exemplos
Processamento de Imagens em Kotlin: redimensionar e cortar com a biblioteca ImageMagick
gRPC para C++: guia completo com exemplos
Trabalhando com Apache Kafka em C++: biblioteca librdkafka e exemplos práticos
Blade para PHP: guia completo com exemplos práticos