Tous les produits
Search
Centre de documentation

Elasticsearch:Java API

Dernière mise à jour :Aug 09, 2026

Alibaba Cloud Elasticsearch prend en charge quatre clients Java pour interagir avec votre cluster. Chaque client utilise un protocole différent et cible des versions spécifiques d'Elasticsearch. Choisissez le client qui correspond à la version de votre cluster et à votre cas d'utilisation.

Types de clients

Client

Protocole

Statut

Versions ES prises en charge

Transport Client

TCP

Obsolète

5.x–6.x

Java Low Level REST Client

HTTP

Maintenu

Toutes les versions

Java High Level REST Client

HTTP

Obsolète (depuis ES 7.15)

6.x–7.x

Elasticsearch Java API Client

HTTP

Recommandé

7.17 et versions ultérieures

Avertissement

Transport Client communique avec le cluster via TCP et est obsolète dans les versions récentes d'Elasticsearch. Si vous utilisez Transport Client 5.5 pour accéder à un cluster 5.5, ou Transport Client 5.6 pour accéder à un cluster 5.6, une erreur NoNodeAvailableException se produit. Utilisez plutôt Transport Client 5.3.3 ou Java Low Level REST Client.

Important

Java High Level REST Client est obsolète depuis Elasticsearch 7.15. Pour les nouveaux projets sur ES 7.17 et versions ultérieures, utilisez Elasticsearch Java API Client.

Fonctionnement

Tous les clients Java basés sur REST (Low Level REST Client, High Level REST Client et Java API Client) se connectent à votre cluster Elasticsearch via HTTPS en utilisant l'authentification de base. Le client envoie des requêtes HTTP au point de terminaison du cluster et reçoit des réponses JSON.

Transport Client se connecte via TCP au lieu de HTTP. Étant donné que la communication basée sur TCP introduit des contraintes de compatibilité des versions que les clients HTTP évitent, Elasticsearch a rendu Transport Client obsolète à partir de la version 7.x.

Compatibilité des versions

Alignez la version de votre client sur celle de votre cluster pour éviter les problèmes de compatibilité. Elasticsearch Java API Client suit la numérotation des versions d'Elasticsearch : un client en version 8.x est compatible avec les clusters Elasticsearch 8.x et les versions mineures ultérieures au sein de la même version majeure.

Version du cluster Elasticsearch

Client recommandé

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 et versions ultérieures

Elasticsearch Java API Client

8.x

Elasticsearch Java API Client 8.x

Exemples d'utilisation

Tous les exemples utilisent l'authentification de base. Remplacez les espaces réservés par vos valeurs réelles avant d'exécuter le code.

Espace réservé

Description

<YourEsHost>

Le point de terminaison public ou interne de votre cluster. Vous pouvez le trouver sur la page Basic Information de votre cluster dans la console Elasticsearch.

<UserName>

Le nom d'utilisateur du cluster. Le nom d'utilisateur par défaut est elastic.

<YourPassword>

Le mot de passe du cluster. Pour le réinitialiser, accédez à la page Security de votre cluster.

<YourEsIndex>

Le nom de l'index à utiliser.

<YourEsId>

L'ID du document.

Java High Level REST Client

Cet exemple utilise High Level REST Client 6.7. Ajoutez la dépendance suivante à votre fichier Maven pom.xml :

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

Pour Gradle, ajoutez :

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

Java Low Level REST Client fonctionne avec toutes les versions d'Elasticsearch. Utilisez-le lorsque vous avez besoin d'une large compatibilité des versions ou souhaitez un contrôle total sur la sérialisation des requêtes.

Ajoutez la dépendance suivante à votre fichier Maven pom.xml :

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

Pour Gradle, ajoutez :

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();
    }
}

Rubriques connexes