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.
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.
Dayakan ciri Pengindeksan Auto dalam fail konfigurasi YAML. Untuk butiran, lihat Konfigurasikan fail YML.
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.
Pasang Java Development Kit (JDK) versi 1.8 atau lebih baru. Untuk mendapatkan maklumat lanjut, lihat Pasang JDK.
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>
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(); } } }
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.
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!