Rumah  >  Artikel  >  hujung hadapan web  >  Tingkatkan Pengalaman Elasticsearch Anda dengan Java High Level REST Client ()

Tingkatkan Pengalaman Elasticsearch Anda dengan Java High Level REST Client ()

PHPz
PHPzasal
2024-07-18 09:01:00607semak imbas

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

pengenalan

Java High Level REST Client (7.x) ialah alat yang berkuasa untuk berinteraksi dengan kelompok Elasticsearch, menjadikan komunikasi pelayan lebih mudah diakses dan cekap. Dalam panduan ini, kami akan membimbing anda melalui langkah-langkah untuk menggunakan Klien REST Tahap Tinggi untuk memanggil API Java Elasticsearch pada kelompok Alibaba Cloud Elasticsearch.

Persediaan

Langkah 1: Buat Kluster Elasticsearch

Pastikan versi kluster anda sama atau lebih baharu daripada versi Java High Level REST Client yang anda rancang untuk gunakan. Untuk arahan langkah demi langkah, lihat Buat gugusan Alibaba Cloud Elasticsearch.

Langkah 2: Dayakan Pengindeksan Auto

Dayakan ciri Pengindeksan Auto dalam fail konfigurasi YAML. Untuk butiran, lihat Konfigurasikan fail YML.

Langkah 3: Konfigurasikan Senarai Putih Alamat IP

Pastikan komunikasi yang betul dengan mengkonfigurasi senarai putih alamat IP. Jika anda mengakses kluster melalui Internet, benarkan permintaan daripada alamat IP yang diperlukan dengan mengikut garis panduan dalam Konfigurasikan senarai putih alamat IP awam atau peribadi.

Langkah 4: Pasang JDK

Pasang Java Development Kit (JDK) versi 1.8 atau lebih baru. Untuk mendapatkan maklumat lanjut, lihat Pasang JDK.

Langkah 5: Cipta Projek Java Maven

Tambahkan kebergantungan yang diperlukan pada fail pom.xml anda. Tukar nombor versi dalam kebergantungan daripada 7.x kepada versi khusus Klien REST Tahap Tinggi yang anda gunakan.

<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>

Contoh: Mengurus Indeks

Di bawah ialah contoh mencipta dan memadam indeks menggunakan Klien REST Tahap Tinggi. Gantikan ruang letak {} dengan parameter khusus anda.

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

Konfigurasi Kontara Tinggi

Untuk senario konkurensi tinggi, tingkatkan bilangan sambungan pelanggan:

httpClientBuilder.setMaxConnTotal(500);
httpClientBuilder.setMaxConnPerRoute(300);

Contoh coretan kod:

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

Untuk butiran lanjut tentang ciri dan konfigurasi, lihat dokumentasi Java High Level REST Client rasmi.

Kesimpulan

Menggunakan Java High Level REST Client memastikan interaksi yang cekap dengan kelompok Alibaba Cloud Elasticsearch anda. Ikuti panduan ini untuk memanfaatkan sepenuhnya persediaan Elasticsearch anda.
Bersedia untuk memulakan perjalanan anda dengan Elasticsearch di Alibaba Cloud? Terokai penyelesaian dan perkhidmatan Awan kami yang disesuaikan untuk mengubah data anda menjadi karya visual.

Klik di sini untuk memulakan Percubaan Percuma 30 Hari Anda

Atas ialah kandungan terperinci Tingkatkan Pengalaman Elasticsearch Anda dengan Java High Level REST Client (). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn