Cliente Elasticsearch para Java: guia completo para trabalhar com o Java Client

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

Cliente Elasticsearch para Java: guia completo

\n\n

Elasticsearch é um poderoso sistema de busca e análise distribuído baseado no Apache Lucene. Para integração com aplicações Java, a empresa Elastic fornece o oficial Cliente Elasticsearch Java (anteriormente conhecido como High-Level REST Client). Neste artigo, vamos detalhar como usar este cliente para realizar operações principais: conexão, indexação de documentos, operações CRUD e pesquisa de texto completo.

\n\n

O que é o Cliente Elasticsearch Java?

\n\n

O Cliente Elasticsearch Java é uma API moderna e type-safe para interagir com o Elasticsearch a partir de Java. Ele é construído sobre um cliente HTTP assíncrono e suporta todas as versões do Elasticsearch a partir da 7.x. Principais vantagens:

\n\n
    \n
  • Suporte completo a todas as APIs do Elasticsearch (indexação, pesquisa, agregações, gerenciamento de cluster).
  • \n
  • Assincronicidade e reatividade — suporte integrado para CompletableFuture e fluxos reativos.
  • \n
  • Consultas DSL type-safe — minimização de erros em tempo de compilação.
  • \n
  • Configuração simples — quantidade mínima de dependências.
  • \n
\n\n

Instalação e configuração

\n\n

Para conectar o cliente a um projeto Maven, adicione a seguinte dependência no pom.xml:

\n\n
<dependency>\n    <groupId>co.elastic.clients</groupId>\n    <artifactId>elasticsearch-java</artifactId>\n    <version>8.15.0</version>\n</dependency>
\n\n

Para Gradle (build.gradle):

\n\n
implementation 'co.elastic.clients:elasticsearch-java:8.15.0'
\n\n

Também será necessário o Jackson para serialização/desserialização JSON:

\n\n
<dependency>\n    <groupId>com.fasterxml.jackson.core</groupId>\n    <artifactId>jackson-databind</artifactId>\n    <version>2.17.0</version>\n</dependency>
\n\n

Criação do cliente e conexão

\n\n

Para criar o cliente, é necessário especificar o host e a porta do Elasticsearch. Exemplo de configuração básica:

\n\n
import co.elastic.clients.elasticsearch.ElasticsearchClient;\nimport co.elastic.clients.json.jackson.JacksonJsonpMapper;\nimport co.elastic.clients.transport.rest_client.RestClientTransport;\nimport org.apache.http.Header;\nimport org.apache.http.message.BasicHeader;\nimport org.elasticsearch.client.RestClient;\n\npublic class ElasticsearchExample {\n\n    public static ElasticsearchClient createClient() {\n        // Cria o cliente REST de baixo nível\n        RestClient restClient = RestClient.builder(\n                new HttpHost("localhost", 9200, "http")\n        ).setDefaultHeaders(new Header[]{\n                new BasicHeader("Content-Type", "application/json")\n        }).build();\n\n        // Transporte com mapeador Jackson\n        RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());\n\n        // Cliente de alto nível\n        return new ElasticsearchClient(transport);\n    }\n\n    public static void main(String[] args) throws IOException {\n        ElasticsearchClient client = createClient();\n        System.out.println("Cliente criado com sucesso!");\n        client.close();\n    }\n}
\n\n

Trabalhando com índices

\n\n

Antes de começar, é necessário criar um índice. Veja um exemplo de criação de índice com mapeamento:

\n\n
public static void createIndex(ElasticsearchClient client, String indexName) throws IOException {\n    client.indices().create(c -> c\n            .index(indexName)\n            .mappings(m -> m\n                    .properties("title", p -> p.text(t -> t))\n                    .properties("content", p -> p.text(t -> t))\n                    .properties("price", p -> p.double_(d -> d))\n                    .properties("createdAt", p -> p.date(d -> d))\n                    

Recommendations