Elasticsearch-py: integração com Elasticsearch em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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                    

Recommendations