"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Mejore su experiencia con Elasticsearch con el cliente REST de alto nivel de Java ()

Mejore su experiencia con Elasticsearch con el cliente REST de alto nivel de Java ()

Publicado el 2024-08-01
Navegar:151

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

Introducción

Java High Level REST Client (7.x) es una poderosa herramienta para interactuar con los clústeres de Elasticsearch, lo que hace que la comunicación del servidor sea más accesible y eficiente. En esta guía, lo guiaremos a través de los pasos para usar el cliente REST de alto nivel para llamar a las API de Java de Elasticsearch en un clúster de Elasticsearch de Alibaba Cloud.

Preparativos

Paso 1: crear un clúster de Elasticsearch

Asegúrese de que la versión de su clúster sea la misma o más reciente que la versión del Cliente REST de alto nivel de Java que planea usar. Para obtener instrucciones paso a paso, consulte Crear un clúster de Alibaba Cloud Elasticsearch.

Paso 2: habilite la indexación automática

Habilite la función de indexación automática en el archivo de configuración YAML. Para obtener más información, consulte Configurar el archivo YML.

Paso 3: configurar la lista blanca de direcciones IP

Asegure una comunicación adecuada configurando una lista blanca de direcciones IP. Si accede al clúster a través de Internet, permita las solicitudes de las direcciones IP requeridas siguiendo las pautas en Configurar una lista blanca de direcciones IP públicas o privadas.

Paso 4: Instale JDK

Instale el kit de desarrollo de Java (JDK) versión 1.8 o posterior. Para obtener más información, consulte Instalar un JDK.

Paso 5: crear un proyecto Java Maven

Agregue las dependencias necesarias a su archivo pom.xml. Cambie el número de versión en las dependencias de 7.x a la versión específica del Cliente REST de alto nivel que está utilizando.

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

Ejemplo: gestionar un índice

A continuación se muestra un ejemplo de cómo crear y eliminar un índice utilizando el cliente REST de alto nivel. Reemplace los marcadores de posición {} con sus parámetros específicos.

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

Configuración de alta concurrencia

Para escenarios de alta concurrencia, aumente la cantidad de conexiones de clientes:

httpClientBuilder.setMaxConnTotal(500);
httpClientBuilder.setMaxConnPerRoute(300);

Fragmento de código de muestra:

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

Para obtener más detalles sobre funciones y configuraciones, consulte la documentación oficial del cliente REST de alto nivel de Java.

Conclusión

El uso del cliente REST de alto nivel de Java garantiza una interacción eficiente con su clúster Alibaba Cloud Elasticsearch. Siga esta guía para aprovechar al máximo su configuración de Elasticsearch.
¿Listo para comenzar su viaje con Elasticsearch en Alibaba Cloud? Explore nuestras soluciones y servicios en la nube personalizados para transformar sus datos en una obra maestra visual.

Haga clic aquí para embarcarse en su prueba gratuita de 30 días

Declaración de liberación Este artículo se reproduce en: https://dev.to/a_lucas/elevate-your-elasticsearch-experience-with-java-high-level-rest-client-7x-348k?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3