Java High Level REST Client (7.x) は、Elasticsearch クラスターと対話するための強力なツールであり、サーバー通信をよりアクセスしやすく効率的にします。このガイドでは、高レベル REST クライアントを使用して、Alibaba Cloud Elasticsearch クラスター上で Elasticsearch Java API を呼び出す手順を説明します。
クラスターのバージョンが、使用する予定の Java 高レベル REST クライアントのバージョンと同じか新しいことを確認してください。詳しい手順については、「Alibaba Cloud Elasticsearch クラスターの作成」を参照してください。
YAML 構成ファイルで自動インデックス作成機能を有効にします。詳細については、「YML ファイルの構成」を参照してください。
IP アドレスのホワイトリストを構成して、適切な通信を確保します。インターネット経由でクラスターにアクセスしている場合は、「パブリックまたはプライベート IP アドレスのホワイトリストの構成」のガイドラインに従って、必要な IP アドレスからのリクエストを許可します。
Java Development Kit (JDK) バージョン 1.8 以降をインストールします。詳細については、「JDK のインストール」を参照してください。
必要な依存関係を 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>
以下は、高レベル 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<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 Client の公式ドキュメントを参照してください。
Java High Level REST Client を使用すると、Alibaba Cloud Elasticsearch クラスターとの効率的な対話が保証されます。このガイドに従って、Elasticsearch のセットアップを最大限に活用してください。
Alibaba Cloud で Elasticsearch を使い始める準備はできましたか?カスタマイズされたクラウド ソリューションとサービスを探索して、データを視覚的な傑作に変換します。
ここをクリックして 30 日間の無料トライアルを開始してください
以上がJava 高レベル REST クライアントで Elasticsearch エクスペリエンスを向上させる ()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。