"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Améliorez votre expérience Elasticsearch avec le client Java REST de haut niveau ()

Améliorez votre expérience Elasticsearch avec le client Java REST de haut niveau ()

Publié le 2024-08-01
Parcourir:332

Elevate Your Elasticsearch Experience with Java High Level REST Client ()

Introduction

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.

Les préparatifs

Étape 1 : Créer un cluster 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.

Étape 2 : Activer l'indexation automatique

Activez la fonctionnalité d'indexation automatique dans le fichier de configuration YAML. Pour plus de détails, consultez Configurer le fichier YML.

Étape 3 : Configurer la liste blanche d'adresses IP

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 dans Configurer une liste blanche d'adresses IP publiques ou privées.

Étape 4 : Installer le JDK

Installez Java Development Kit (JDK) version 1.8 ou ultérieure. Pour plus d'informations, consultez Installer un JDK.

Étape 5 : Créer un projet Java Maven

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.

org.elasticsearch.clientelasticsearch-rest-high-level-client7.xorg.apache.logging.log4jlog4j-core2.20.0org.apache.logging.log4jlog4j-api2.20.0

Exemple : gestion d'un index

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

Configuration à haute concurrence

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.

Conclusion

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

Déclaration de sortie Cet article est reproduit sur : https://dev.to/a_lucas/elevate-your-elasticsearch-experience-with-java-high-level-rest-client-7x-348k?1 En cas d'infraction, veuillez contacter study_golang @163.com supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3