"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ارفع مستوى تجربتك في Elasticsearch مع Java High Level REST Client ()

ارفع مستوى تجربتك في Elasticsearch مع Java High Level REST Client ()

تم النشر بتاريخ 2024-08-01
تصفح:167

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

مقدمة

يعد Java High Level REST Client (7.x) أداة قوية للتفاعل مع مجموعات Elasticsearch، مما يجعل الاتصال بالخادم أكثر سهولة وكفاءة. في هذا الدليل، سنرشدك خلال خطوات استخدام High Level REST Client لاستدعاء Elasticsearch Java APIs على مجموعة Alibaba Cloud Elasticsearch.

الاستعدادات

الخطوة 1: إنشاء مجموعة Elasticsearch

تأكد من أن إصدار المجموعة الخاص بك هو نفس إصدار Java High Level REST Client الذي تخطط لاستخدامه أو أحدث منه. للحصول على تعليمات خطوة بخطوة، راجع إنشاء مجموعة 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 إلى الإصدار المحدد من 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 {
            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 High Level REST Client التفاعل الفعال مع مجموعة Alibaba Cloud Elasticsearch الخاصة بك. اتبع هذا الدليل لتحقيق أقصى استفادة من إعداد Elasticsearch.
هل أنت مستعد لبدء رحلتك مع Elasticsearch على Alibaba Cloud؟ استكشف حلولنا وخدماتنا السحابية المخصصة لتحويل بياناتك إلى تحفة بصرية.

انقر هنا للشروع في النسخة التجريبية المجانية لمدة 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