يعد Java High Level REST Client (7.x) أداة قوية للتفاعل مع مجموعات Elasticsearch، مما يجعل الاتصال بالخادم أكثر سهولة وكفاءة. في هذا الدليل، سنرشدك خلال خطوات استخدام High Level REST Client لاستدعاء Elasticsearch Java APIs على مجموعة Alibaba Cloud Elasticsearch.
تأكد من أن إصدار المجموعة الخاص بك هو نفس إصدار Java High Level REST Client الذي تخطط لاستخدامه أو أحدث منه. للحصول على تعليمات خطوة بخطوة، راجع إنشاء مجموعة Alibaba Cloud Elasticsearch.
تمكين ميزة الفهرسة التلقائية في ملف تكوين YAML. للحصول على التفاصيل، راجع تكوين ملف YML.
تأكد من الاتصال المناسب عن طريق تكوين القائمة البيضاء لعناوين IP. إذا كنت تقوم بالوصول إلى المجموعة عبر الإنترنت، فاسمح بالطلبات من عناوين IP المطلوبة عن طريق اتباع الإرشادات الموجودة في تكوين القائمة البيضاء لعناوين IP العامة أو الخاصة.
قم بتثبيت Java Development Kit (JDK) الإصدار 1.8 أو الأحدث. لمزيد من المعلومات، راجع تثبيت JDK.
أضف التبعيات الضرورية إلى ملف pom.xml الخاص بك. قم بتغيير رقم الإصدار في التبعيات من 7.x إلى الإصدار المحدد من High Level REST Client الذي تستخدمه.
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
فيما يلي مثال لإنشاء وحذف فهرس باستخدام 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 { 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(); } } }
بالنسبة لسيناريوهات التزامن العالي، قم بزيادة عدد اتصالات العميل:
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.
هل أنت مستعد لبدء رحلتك مع Elasticsearch على Alibaba Cloud؟ استكشف حلولنا وخدماتنا السحابية المخصصة لتحويل بياناتك إلى تحفة بصرية.
انقر هنا للشروع في النسخة التجريبية المجانية لمدة 30 يومًا
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3