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 |
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.
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 |
|
|
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. |
|
|
Le nom d'utilisateur du cluster. Le nom d'utilisateur par défaut est |
|
|
Le mot de passe du cluster. Pour le réinitialiser, accédez à la page Security de votre cluster. |
|
|
Le nom de l'index à utiliser. |
|
|
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
Pour des exemples de code couvrant tous les types de clients, consultez Vue d'ensemble.
Pour réinitialiser le mot de passe de votre cluster, consultez Réinitialiser le mot de passe d'accès d'un cluster Elasticsearch.