Java High Level REST Client (7.x) est un outil puissant pour interagir avec les clusters Elasticsearch, rendant la communication du serveur plus accessible et efficace. Dans ce guide, nous vous guiderons à travers les étapes d'utilisation du client REST de haut niveau pour appeler les API Java Elasticsearch sur un cluster Alibaba Cloud Elasticsearch.
Assurez-vous que la version de votre cluster est identique ou plus récente que la version du client Java REST de haut niveau que vous prévoyez d'utiliser. Pour obtenir des instructions étape par étape, consultez Créer un cluster Alibaba Cloud Elasticsearch.
Activez la fonctionnalité d'indexation automatique dans le fichier de configuration YAML. Pour plus de détails, consultez Configurer le fichier YML.
Assurez une bonne communication en configurant une liste blanche d'adresses IP. Si vous accédez au cluster via Internet, autorisez les requêtes provenant des adresses IP requises en suivant les instructions de la section Configurer une liste blanche d'adresses IP publiques ou privées.
Installez Java Development Kit (JDK) version 1.8 ou ultérieure. Pour plus d'informations, consultez Installer un JDK.
Ajoutez les dépendances nécessaires à votre fichier pom.xml. Modifiez le numéro de version dans les dépendances de 7.x à la version spécifique du client REST de haut niveau que vous utilisez.
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.x</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.20.0</version> </dependency>
Vous trouverez ci-dessous un exemple de création et de suppression d'un index à l'aide du client REST de haut niveau. Remplacez les espaces réservés {} par vos paramètres spécifiques.
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 RestClientExample { private static final RequestOptions COMMON_OPTIONS; static { RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); builder.setHttpAsyncResponseConsumerFactory( new HttpAsyncResponseConsumerFactory .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024)); COMMON_OPTIONS = builder.build(); } public static void main(String[] args) { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("{Username}", "{Password}")); RestClientBuilder builder = RestClient.builder(new HttpHost("{Endpoint of the Elasticsearch cluster}", 9200, "http")) .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }); RestHighLevelClient highClient = new RestHighLevelClient(builder); try { Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("{field_01}", "{value_01}"); jsonMap.put("{field_02}", "{value_02}"); IndexRequest indexRequest = new IndexRequest("{index_name}", "_doc", "{doc_id}").source(jsonMap); IndexResponse indexResponse = highClient.index(indexRequest, COMMON_OPTIONS); long version = indexResponse.getVersion(); System.out.println("Index document successfully! " + version); DeleteRequest deleteRequest = new DeleteRequest("{index_name}", "_doc", "{doc_id}"); DeleteResponse deleteResponse = highClient.delete(deleteRequest, COMMON_OPTIONS); System.out.println("Delete document successfully! \n" + deleteResponse.toString()); highClient.close(); } catch (IOException ioException) { ioException.printStackTrace(); } } }
Pour les scénarios à forte concurrence, augmentez le nombre de connexions client :
httpClientBuilder.setMaxConnTotal(500); httpClientBuilder.setMaxConnPerRoute(300);
Exemple d'extrait de code :
String host = "127.0.0.1"; int port = 9200; String username = "elastic"; String password = "passwd"; final int max_conn_total = 500; final int max_conn_per_route = 300; RestHighLevelClient restHighLevelClient = new RestHighLevelClient( RestClient.builder(new HttpHost(host, port, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { httpClientBuilder.setMaxConnTotal(max_conn_total); httpClientBuilder.setMaxConnPerRoute(max_conn_per_route); return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }) );
Pour plus de détails sur les fonctionnalités et les configurations, consultez la documentation officielle du client Java REST de haut niveau.
L'utilisation du client Java REST de haut niveau garantit une interaction efficace avec votre cluster Alibaba Cloud Elasticsearch. Suivez ce guide pour tirer le meilleur parti de votre configuration Elasticsearch.
Prêt à commencer votre voyage avec Elasticsearch sur Alibaba Cloud ? Découvrez nos solutions et services Cloud sur mesure pour transformer vos données en un chef-d'œuvre visuel.
Cliquez ici pour lancer votre essai gratuit de 30 jours
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!