「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java 高レベル REST クライアントで Elasticsearch エクスペリエンスを向上させる ()

Java 高レベル REST クライアントで Elasticsearch エクスペリエンスを向上させる ()

2024 年 8 月 1 日に公開
ブラウズ:692

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

導入

Java High Level REST Client (7.x) は、Elasticsearch クラスターと対話するための強力なツールであり、サーバー通信をよりアクセスしやすく効率的にします。このガイドでは、高レベル REST クライアントを使用して、Alibaba Cloud Elasticsearch クラスター上で Elasticsearch Java API を呼び出す手順を説明します。

準備

ステップ 1: Elasticsearch クラスターを作成する

クラスターのバージョンが、使用する予定の Java 高レベル REST クライアントのバージョンと同じか新しいことを確認してください。詳しい手順については、「Alibaba Cloud Elasticsearch クラスターの作成」を参照してください。

ステップ 2: 自動インデックス作成を有効にする

YAML 構成ファイルで自動インデックス作成機能を有効にします。詳細については、「YML ファイルの構成」を参照してください。

ステップ 3: IP アドレスのホワイトリストを構成する

IP アドレスのホワイトリストを構成して、適切な通信を確保します。インターネット経由でクラスターにアクセスしている場合は、「パブリックまたはプライベート IP アドレスのホワイトリストの構成」のガイドラインに従って、必要な IP アドレスからのリクエストを許可します。

ステップ 4: JDK をインストールする

Java Development Kit (JDK) バージョン 1.8 以降をインストールします。詳細については、「JDK のインストール」を参照してください。

ステップ 5: Java Maven プロジェクトを作成する

必要な依存関係を pom.xml ファイルに追加します。依存関係のバージョン番号を 7.x から、使用している高レベル REST クライアントの特定のバージョンに変更します。


    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

例: インデックスの管理

以下は、高レベル REST クライアントを使用してインデックスを作成および削除する例です。プレースホルダー {} を特定のパラメーターに置き換えます。

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

高同時実行構成

同時実行性の高いシナリオの場合は、クライアント接続の数を増やします:

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 Client ドキュメントを参照してください。

結論

Java ハイレベル REST クライアントを使用すると、Alibaba Cloud Elasticsearch クラスターとの効率的な対話が保証されます。このガイドに従って、Elasticsearch のセットアップを最大限に活用してください。
Alibaba Cloud で Elasticsearch を使い始める準備はできましたか?カスタマイズされたクラウド ソリューションとサービスを探索して、データを視覚的な傑作に変換します。

ここをクリックして 30 日間の無料トライアルを開始してください

リリースステートメント この記事は次の場所に転載されています: https://dev.to/a_lucas/elevate-your-elasticsearch- experience-with-java-high-level-rest-client-7x-348k?1 侵害がある場合は、study_golang にご連絡ください。 @163.com 削除
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3