Todos os produtos
Search
Central de documentação

Elasticsearch:Java API

Última atualização: Jun 27, 2026

O Alibaba Cloud Elasticsearch oferece suporte a quatro clientes Java para interação com seu cluster. Cada cliente utiliza um protocolo diferente e atende a versões específicas do Elasticsearch. Escolha o cliente adequado à versão do seu cluster e ao seu caso de uso.

Tipos de cliente

Cliente

Protocolo

Status

Versões do ES suportadas

Transport Client

TCP

Obsoleto

5.x–6.x

Java Low Level REST Client

HTTP

Mantido

Todas as versões

Java High Level REST Client

HTTP

Obsoleto (desde o ES 7.15)

6.x–7.x

Elasticsearch Java API Client

HTTP

Recomendado

7.17 e posteriores

Aviso

O Transport Client comunica-se com o cluster via TCP e tornou-se obsoleto nas versões mais recentes do Elasticsearch. Caso utilize o Transport Client 5.5 para acessar um cluster 5.5 ou o Transport Client 5.6 para acessar um cluster 5.6, ocorrerá o erro NoNodeAvailableException. Use o Transport Client 5.3.3 ou o Java Low Level REST Client como alternativa.

Importante

O Java High Level REST Client foi descontinuado a partir do Elasticsearch 7.15. Em novos projetos com ES 7.17 ou superior, use o Elasticsearch Java API Client.

Como funciona

Todos os clientes Java baseados em REST (Low Level REST Client, High Level REST Client e Java API Client) conectam-se ao cluster Elasticsearch por HTTPS mediante autenticação básica. O cliente envia solicitações HTTP ao endpoint do cluster e recebe respostas JSON.

O Transport Client conecta-se via TCP em vez de HTTP. Como a comunicação baseada em TCP impõe restrições de compatibilidade de versão inexistentes nos clientes HTTP, o Elasticsearch descontinuou o Transport Client a partir da versão 7.x.

Compatibilidade de versões

Alinhe a versão do cliente à versão do cluster para evitar problemas de compatibilidade. O Java API Client segue a numeração de versão do Elasticsearch: um cliente na versão 8.x é compatível com clusters Elasticsearch 8.x e versões menores subsequentes dentro da mesma release principal.

Versão do cluster Elasticsearch

Cliente recomendado

5.x

Transport Client 5.3.3 ou Java Low Level REST Client

6.x

Java High Level REST Client 6.x ou Java Low Level REST Client

7.x (7,0–7,16)

Java High Level REST Client 7.x ou Java Low Level REST Client

7.17 e posteriores

Elasticsearch Java API Client

8.x

Elasticsearch Java API Client 8.x

Exemplos de uso

Todos os exemplos utilizam autenticação básica. Substitua os placeholders pelos valores reais antes de executar o código.

Placeholder

Descrição

<YourEsHost>

Endpoint público ou interno do cluster. Consulte-o na página Basic Information do cluster no console do Elasticsearch.

<UserName>

Nome de usuário do cluster. O padrão é elastic.

<YourPassword>

Senha do cluster. Para redefini-la, acesse a página Security do cluster.

<YourEsIndex>

Nome do índice alvo da operação.

<YourEsId>

ID do documento.

Java High Level REST Client

Este exemplo usa o High Level REST Client 6.7. Adicione a seguinte dependência ao arquivo Maven pom.xml:

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>6.7.0</version>
</dependency>

Para Gradle, adicione:

dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.7.0'
}
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.*;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class HighLevelRestClientExample {

    private static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        COMMON_OPTIONS = builder.build();
    }

    public static void main(String[] args) throws IOException {
        // Set up credentials
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("<UserName>", "<YourPassword>"));

        // Create the client
        RestClientBuilder builder = RestClient.builder(
            new HttpHost("<YourEsHost>", 9200, "http"))
            .setHttpClientConfigCallback(
                (HttpAsyncClientBuilder httpClientBuilder) ->
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));

        RestHighLevelClient client = new RestHighLevelClient(builder);

        // Index a document
        Map<String, Object> document = new HashMap<>();
        document.put("title", "Example document");
        document.put("content", "Hello, Elasticsearch!");

        IndexRequest indexRequest = new IndexRequest("<YourEsIndex>")
            .id("<YourEsId>")
            .source(document);

        IndexResponse indexResponse = client.index(indexRequest, COMMON_OPTIONS);
        System.out.println("Indexed document ID: " + indexResponse.getId());

        // Delete a document
        DeleteRequest deleteRequest = new DeleteRequest("<YourEsIndex>", "<YourEsId>");
        DeleteResponse deleteResponse = client.delete(deleteRequest, COMMON_OPTIONS);
        System.out.println("Deleted document ID: " + deleteResponse.getId());

        client.close();
    }
}

Java Low Level REST Client

O Java Low Level REST Client é compatível com todas as versões do Elasticsearch. Utilize-o quando precisar de ampla compatibilidade entre versões ou desejar controle total sobre a serialização das solicitações.

Adicione a seguinte dependência ao arquivo Maven pom.xml:

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-client</artifactId>
  <version>6.7.0</version>
</dependency>

Para Gradle, adicione:

dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-client:6.7.0'
}
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;

public class LowLevelRestClientExample {

    public static void main(String[] args) throws Exception {
        // Set up credentials
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("<UserName>", "<YourPassword>"));

        // Create the client
        RestClient client = RestClient.builder(
            new HttpHost("<YourEsHost>", 9200, "http"))
            .setHttpClientConfigCallback(
                (HttpAsyncClientBuilder httpClientBuilder) ->
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
            .build();

        // Use the client to send requests...

        client.close();
    }
}

Tópicos relacionados