> 웹 프론트엔드 > JS 튜토리얼 > Java 고급 REST 클라이언트로 Elasticsearch 경험 향상()

Java 고급 REST 클라이언트로 Elasticsearch 경험 향상()

PHPz
풀어 주다: 2024-07-18 09:01:00
원래의
662명이 탐색했습니다.

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

소개

Java 고급 REST 클라이언트(7.x)는 Elasticsearch 클러스터와 상호작용하기 위한 강력한 도구로, 서버 통신에 더 쉽게 접근하고 효율적으로 만들어줍니다. 이 가이드에서는 고급 REST 클라이언트를 사용하여 Alibaba Cloud Elasticsearch 클러스터에서 Elasticsearch Java API를 호출하는 단계를 안내합니다.

준비

1단계: Elasticsearch 클러스터 생성

클러스터 버전이 사용하려는 Java High Level REST 클라이언트 버전과 같거나 최신인지 확인하세요. 단계별 지침은 Alibaba Cloud Elasticsearch 클러스터 생성을 참조하세요.

2단계: 자동 인덱싱 활성화

YAML 구성 파일에서 자동 색인 기능을 활성화합니다. 자세한 내용은 YML 파일 구성을 참조하세요.

3단계: IP 주소 화이트리스트 구성

IP 주소 화이트리스트를 구성하여 올바른 통신을 보장하세요. 인터넷을 통해 클러스터에 액세스하는 경우 공용 또는 개인 IP 주소 화이트리스트 구성의 지침에 따라 필수 IP 주소의 요청을 허용하세요.

4단계: JDK 설치

JDK(Java Development Kit) 버전 1.8 이상을 설치하세요. 자세한 내용은 JDK 설치를 참조하세요.

5단계: Java Maven 프로젝트 생성

pom.xml 파일에 필요한 종속성을 추가합니다. 종속성 버전 번호를 7.x에서 사용 중인 상위 수준 REST 클라이언트의 특정 버전으로 변경하세요.

<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>
로그인 후 복사

예: 인덱스 관리

아래는 High Level REST Client를 이용하여 인덱스를 생성하고 삭제하는 예입니다. 자리표시자 {}를 특정 매개변수로 바꾸세요.

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();
        }
    }
}
로그인 후 복사

높은 동시성 구성

동시성이 높은 시나리오의 경우 클라이언트 연결 수를 늘리세요.

httpClientBuilder.setMaxConnTotal(500);
httpClientBuilder.setMaxConnPerRoute(300);
로그인 후 복사

샘플 코드 조각:

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);
    }
  })
);
로그인 후 복사

기능 및 구성에 대한 자세한 내용은 공식 Java High Level REST 클라이언트 문서를 참조하세요.

결론

Java 고급 REST 클라이언트를 사용하면 Alibaba Cloud Elasticsearch 클러스터와의 효율적인 상호 작용이 보장됩니다. Elasticsearch 설정을 최대한 활용하려면 이 가이드를 따르세요.
Alibaba Cloud에서 Elasticsearch와 함께 여정을 시작할 준비가 되셨나요? 귀하의 데이터를 시각적 걸작으로 변환하는 맞춤형 클라우드 솔루션과 서비스를 살펴보세요.

30일 무료 평가판을 시작하려면 여기를 클릭하세요

위 내용은 Java 고급 REST 클라이언트로 Elasticsearch 경험 향상()의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿