Tous les produits
Search
Centre de documentation

Elasticsearch:Transport Client (5.x)

Dernière mise à jour :Aug 20, 2026
Important

Transport Client est déprécié dans Elasticsearch open source. Pour les nouveaux projets, utilisez le Java Low Level REST Client, qui assure la compatibilité avec toutes les versions d'Elasticsearch.

Cette rubrique explique comment utiliser Transport Client 5.3.3 pour vous connecter à un cluster Alibaba Cloud Elasticsearch V5.x via TCP.

Prérequis

Avant de commencer, vérifiez que vous disposez des éléments suivants :

Important

Si Auto Indexing n'est pas activé, une erreur apparaît lorsque vous indexez un document. Error

Configurez l'accès réseau

Choisissez votre méthode de connexion en fonction de l'endroit où vous exécutez votre client Java.

Internet (endpoint public)

Si votre client Java se trouve en dehors d'un réseau privé virtuel (VPC) :

  1. Activez Public Network Access pour votre cluster.

  2. Ajoutez l'adresse IP publique de votre client à la liste d'autorisation d'adresses IP publiques du cluster. Voir Configurez une liste d'autorisation d'adresses IP publiques ou privées pour un cluster Elasticsearch.

Important
  • Si votre client se trouve sur un réseau domestique ou un réseau local d'entreprise, ajoutez l'adresse IP de sortie Internet à la liste d'autorisation, et non l'adresse IP privée du client.

  • L'ajout de 0.0.0.0/0 à la liste d'autorisation permet à toutes les adresses IPv4 d'accéder au cluster. Évaluez les risques de sécurité avant d'utiliser ce paramètre.

  • Si la liste d'autorisation est manquante ou incorrecte, la connexion échoue avec l'erreur Timeout connecting.

  • Pour accéder au nœud Kibana depuis un client, configurez une liste d'autorisation Kibana distincte. Voir Configurez une liste d'autorisation d'adresses IP publiques ou privées pour Kibana.

Même VPC (endpoint interne)

Si vous exécutez votre client Java dans le même VPC que le cluster Elasticsearch, utilisez l'endpoint interne du cluster. La liste d'autorisation d'adresses IP privées a pour valeur par défaut 0.0.0.0/0.

Ajoutez les dépendances POM

Ajoutez les dépendances suivantes à votre pom.xml :

<repositories>
    <!-- Elasticsearch Maven repository -->
    <repository>
        <id>elasticsearch-releases</id>
        <url>https://artifacts.elastic.co/maven</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>5.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7.1</version>
    </dependency>
</dependencies>
Important

Une vulnérabilité d'exécution de code à distance (RCE) peut exister dans Apache Log4j. Voir Avis de vulnérabilité | Vulnérabilité RCE dans Apache Log4j 2 pour plus de détails et les mesures d'atténuation.

Connectez-vous au cluster

Le code suivant montre comment initialiser une connexion Transport Client. Remplacez les espaces réservés par les valeurs réelles de votre cluster.

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import java.net.InetAddress;

// Initialize the Transport Client
TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
        .put("cluster.name", "<cluster-id>")                        // Your cluster ID
        .put("xpack.security.user", "elastic:<password>")          // Username and password
        .put("client.transport.sniff", false)                      // Must be false
        .build())
        .addTransportAddress(new InetSocketTransportAddress(
                InetAddress.getByName("<endpoint>"), 9300));        // Endpoint (no http://) and port

// Close the client when done
client.close();
Paramètre Description
cluster.name L'ID de votre cluster Elasticsearch. Récupérez-le sur la page Basic Information. Voir Consultez les informations de base d'un cluster.
xpack.security.user Le nom d'utilisateur et le mot de passe au format username:password. Le nom d'utilisateur par défaut est elastic. Pour réinitialiser le mot de passe, voir Réinitialisez le mot de passe d'accès d'un cluster Elasticsearch.
client.transport.sniff Définissez cette valeur sur false.
InetAddress.getByName() L'endpoint du cluster et le port 9300. L'endpoint ne doit pas commencer par http://.

Remplacez les espaces réservés suivants :

Espace réservé Description Exemple
<cluster-id> Votre ID de cluster Elasticsearch es-cn-n6w1rux8i000w****
<password> Le mot de passe de l'utilisateur elastic —
<endpoint> L'endpoint public ou interne du cluster es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com

Exemple

L'exemple suivant se connecte au cluster, écrit un document dans un index, puis le récupère. Téléchargez le code d'exemple complet.

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import static org.elasticsearch.common.xcontent.XContentFactory.*;

import java.net.InetAddress;

public class TransportClientDemo {

    public static void main(String[] args) {
        try {
            // Initialize the client
            TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
                    .put("cluster.name", "es-cn-n6w1rux8i000w****")
                    .put("xpack.security.user", "elastic:es_password")
                    .put("client.transport.sniff", false)
                    .build())
                    .addTransportAddress(new InetSocketTransportAddress(
                            InetAddress.getByName("es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com"), 9300));

            // Write a document to the index
            IndexResponse idxResp3 = client.prepareIndex("test_index", "test_type", "333")
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("user_id", "333")
                            .field("email", "a***@aliyun.com")
                            .endObject()
                    )
                    .get();
            System.out.println(idxResp3.toString());

            // Retrieve the document
            GetResponse getResp = client.prepareGet()
                    .setIndex("test_index")
                    .setType("test_type")
                    .setId("333")
                    .execute()
                    .get();
            System.out.println(getResp.getSourceAsString());

            client.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Dépannage

NoNodeAvailableException

Cette erreur se produit lorsque vous utilisez Transport Client 5.5 ou 5.6 pour vous connecter à un cluster Elasticsearch V5.x. Utilisez Transport Client 5.3.3 à la place.

Timeout connecting

Le cluster est inaccessible. Vérifiez que :

  • L'adresse IP de votre client figure dans la liste d'autorisation du cluster (publique ou privée, selon votre réseau)

  • Vous utilisez le bon endpoint (public ou interne) pour votre environnement réseau

  • L'entrée de la liste d'autorisation utilise l'adresse IP de sortie Internet, et non l'adresse IP privée, pour les clients sur réseau domestique ou réseau local d'entreprise

Erreur Auto Indexing lors de l'écriture d'un document

Si une erreur apparaît lors de l'écriture d'un document, Auto Indexing est peut-être désactivé. Activez-le dans la configuration YML du cluster. Voir Configurez le fichier YML.

Étapes suivantes