Cliente Elasticsearch para Java: guia completo
Elasticsearch é um poderoso sistema de busca e análise distribuído baseado em Lucene. Para interagir com ele a partir de aplicações Java, existe um cliente oficial que fornece uma API conveniente para indexação, busca e gerenciamento de dados. Neste artigo, abordaremos detalhadamente a instalação, configuração e principais recursos do cliente Java Elasticsearch, além de fornecer exemplos práticos de código.
O que é o cliente Java Elasticsearch?
O cliente Java Elasticsearch é uma biblioteca oficial projetada para interagir com um cluster Elasticsearch a partir de aplicações Java. Ele suporta duas abordagens principais:
- Low-level REST Client — cliente de baixo nível que trabalha diretamente com requisições HTTP. Oferece controle total, mas exige formatação manual de JSON.
- High-level REST Client — wrapper de alto nível que fornece uma API orientada a objetos para operações típicas (indexação, busca, atualização). Recomendado para a maioria dos projetos.
A partir do Elasticsearch 7.0, recomenda-se o uso do High-level REST Client, pois é mais conveniente e seguro.
Instalação e conexão
Para conectar o cliente a um projeto Java (Maven), adicione a seguinte dependência ao arquivo pom.xml:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.17.0</version></dependency>Se você usa Gradle, adicione a linha:
implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.0'Após adicionar a dependência, crie uma instância do cliente:
import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.client.RestClient;import org.apache.http.HttpHost;
public class ElasticsearchClientExample { public static void main(String[] args) { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); // Seu código de trabalho com Elasticsearch try { client.close(); } catch (IOException e) { e.printStackTrace(); } }}Operações principais com o cliente
Criação de índice
Antes de começar a trabalhar com dados, é necessário criar um índice (análogo a um banco de dados em SQL). Exemplo:
import org.elasticsearch.client.indices.CreateIndexRequest;import org.elasticsearch.client.indices.CreateIndexResponse;import org.elasticsearch.client.RequestOptions;
public void createIndex(RestHighLevelClient client, String indexName) throws IOException { CreateIndexRequest request = new CreateIndexRequest(indexName); CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); System.out.println("Índice criado: " + response.isAcknowledged());}Indexação de documento
Documentos no Elasticsearch são objetos JSON. Para adicionar um documento, use IndexRequest:
import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.common.xcontent.XContentType;import java.util.HashMap;import java.util.Map;
public void indexDocument(RestHighLevelClient client, String indexName) throws IOException { Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("title", "Cliente Elasticsearch para Java"); jsonMap.put("content", "Descrição detalhada de como trabalhar com Elasticsearch a partir do Java."); jsonMap.put("views", 150);
IndexRequest request = new IndexRequest(indexName) .id("1") .source(jsonMap);
IndexResponse respon