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.
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.
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.
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.
Instale el kit de desarrollo de Java (JDK) versión 1.8 o posterior. Para obtener más información, consulte Instalar un JDK.
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.client elasticsearch-rest-high-level-client 7.x org.apache.logging.log4j log4j-core 2.20.0 org.apache.logging.log4j log4j-api 2.20.0
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 { MapjsonMap = 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(); } } }
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.
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
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