Cliente Elasticsearch para Java: guia completo
\n\nElasticsearch é 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\nO que é o Cliente Elasticsearch Java?
\n\nO 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
Instalação e configuração
\n\nPara conectar o cliente a um projeto Maven, adicione a seguinte dependência no pom.xml:
<dependency>\n <groupId>co.elastic.clients</groupId>\n <artifactId>elasticsearch-java</artifactId>\n <version>8.15.0</version>\n</dependency>\n\nPara Gradle (build.gradle):
\n\nimplementation 'co.elastic.clients:elasticsearch-java:8.15.0'\n\nTambé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\nCriação do cliente e conexão
\n\nPara criar o cliente, é necessário especificar o host e a porta do Elasticsearch. Exemplo de configuração básica:
\n\nimport 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\nTrabalhando com índices
\n\nAntes de começar, é necessário criar um índice. Veja um exemplo de criação de índice com mapeamento:
\n\npublic 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 Também na biblioteca
Aprendizado de Máquina em Kotlin: visão geral das bibliotecas para Data Science e ML
SwiftFormat para Swift: guia completo com exemplos práticos
Testes em JavaScript (Node.js): frameworks e ferramentas
Cliente OAuth para Kotlin: biblioteca Ktor OAuth para autenticação em API
Trabalho com CSV em Java: bibliotecas OpenCSV, Apache Commons CSV e Java Scanner