Java High Level REST Client (7.x) é uma ferramenta poderosa para interagir com clusters Elasticsearch, tornando a comunicação do servidor mais acessível e eficiente. Neste guia, orientaremos você nas etapas de uso do cliente REST de alto nível para chamar APIs Java do Elasticsearch em um cluster Alibaba Cloud Elasticsearch.
Certifique-se de que a versão do cluster seja igual ou mais recente que a versão do Java High Level REST Client que você planeja usar. Para obter instruções passo a passo, consulte Criar um cluster Alibaba Cloud Elasticsearch.
Ative o recurso de indexação automática no arquivo de configuração YAML. Para obter detalhes, consulte Configurar o arquivo YML.
Garanta a comunicação adequada configurando uma lista de permissões de endereços IP. Se você estiver acessando o cluster pela Internet, permita solicitações dos endereços IP necessários seguindo as diretrizes em Configurar uma lista de permissões de endereços IP públicos ou privados.
Instale o Java Development Kit (JDK) versão 1.8 ou posterior. Para obter mais informações, consulte Instalar um JDK.
Adicione as dependências necessárias ao seu arquivo pom.xml. Altere o número da versão nas dependências de 7.x para a versão específica do cliente REST de alto nível que você está usando.
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
Abaixo está um exemplo de criação e exclusão de um índice usando o cliente REST de alto nível. Substitua os espaços reservados {} pelos seus 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 cenários de alta simultaneidade, aumente o número de conexões de clientes:
httpClientBuilder.setMaxConnTotal(500); httpClientBuilder.setMaxConnPerRoute(300);
Exemplo de snippet de código:
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 obter mais detalhes sobre recursos e configurações, consulte a documentação oficial do Java High Level REST Client.
O uso do Java REST Client de alto nível garante uma interação eficiente com seu cluster Alibaba Cloud Elasticsearch. Siga este guia para aproveitar ao máximo sua configuração do Elasticsearch.
Pronto para iniciar sua jornada com o Elasticsearch no Alibaba Cloud? Explore nossas soluções e serviços de nuvem personalizados para transformar seus dados em uma obra-prima visual.
Clique aqui para embarcar em seu teste gratuito de 30 dias
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3