Maison  >  Article  >  interface Web  >  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 ()

PHPz
PHPzoriginal
2024-07-18 09:01:00610parcourir

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.

Préparations

É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 de la section 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.

<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>

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

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn