All Products
Search
Document Center

Elasticsearch:Low Level REST Client (5.x)

Last Updated:Jul 02, 2025

Topik ini menjelaskan cara menggunakan Java Low Level REST Client 5.x untuk memanggil Elasticsearch Java API.

Peringatan

  • Low Level REST Client 5.x hanya kompatibel dengan Alibaba Cloud Elasticsearch V5.5.3. Untuk informasi lebih lanjut tentang cara menggunakan Java REST client untuk mengakses cluster Elasticsearch V6.3.2, lihat Java REST Client 6.3.2.

  • Versi Java REST client harus sesuai dengan versi cluster Elasticsearch Anda.

Persiapan

  • Instal JDK. Versi JDK harus 1.8 atau yang lebih baru.

    Untuk informasi lebih lanjut, lihat Instal JDK.

  • Buat cluster Alibaba Cloud Elasticsearch V5.5.3.

    Untuk informasi lebih lanjut, lihat Buat cluster Alibaba Cloud Elasticsearch.

  • Aktifkan fitur Auto Indexing untuk cluster Elasticsearch.

    Untuk informasi lebih lanjut, lihat Konfigurasikan file YML.

    Jika fitur Auto Indexing tidak diaktifkan, kesalahan berikut akan dilaporkan.Error

  • Konfigurasikan daftar putih alamat IP untuk cluster Elasticsearch untuk memastikan komunikasi normal antar jaringan.

    • Jika server yang menjalankan kode Java berada di lingkungan Internet, Anda dapat mengakses cluster menggunakan endpoint publiknya. Sebelum mengakses cluster, Anda harus mengaktifkan fitur Akses Jaringan Publik untuk cluster dan menambahkan alamat IP publik server ke daftar putih alamat IP publik cluster. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP publik atau privat untuk cluster Elasticsearch.

      Penting
      • Jika klien Anda berada di jaringan rumah atau LAN kantor, Anda harus menambahkan alamat IP egress Internet ke daftar putih, bukan alamat IP privat klien.

      • Anda juga dapat menambahkan 0.0.0.0/0 ke daftar putih untuk mengizinkan permintaan dari semua alamat IPv4. Jika Anda melakukan konfigurasi ini, semua alamat IP publik dapat digunakan untuk mengakses cluster. Ini menimbulkan risiko keamanan. Kami sarankan Anda mengevaluasi risiko sebelum membuat konfigurasi ini.

      • Jika tidak ada daftar putih alamat IP yang dikonfigurasi atau daftar putih alamat IP salah dikonfigurasi, sistem akan melaporkan pesan kesalahan "Timeout connecting" untuk menunjukkan kesalahan timeout koneksi.

      • Jika Anda ingin mengakses node Kibana di cluster Anda dari klien, Anda harus mengonfigurasi daftar putih alamat IP untuk Kibana. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP publik atau privat untuk Kibana.

    • Jika server yang menjalankan kode Java berada di virtual private cloud (VPC) yang sama dengan cluster Elasticsearch, Anda dapat mengakses cluster menggunakan endpoint internalnya. Sebelum mengakses cluster Elasticsearch, pastikan alamat IP privat server ditambahkan ke daftar putih alamat IP privat cluster. Secara default, 0.0.0.0/0 telah ditambahkan ke daftar putih.

  • Buat proyek Java Maven dan tambahkan dependensi Project Object Model (POM) berikut ke file pom.xml proyek.

Dependensi POM

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>rest</artifactId>
    <version>5.5.3</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.7.1</version>
</dependency>
Penting

Kerentanan eksekusi kode jarak jauh (RCE) mungkin ada di Apache Log4j. Untuk informasi lebih lanjut, lihat Pemberitahuan kerentanan | Kerentanan RCE di Apache Log4j 2.

Contoh

Anda dapat mengunduh kode sampel lengkap.

Dalam kode sampel berikut, Java REST client terhubung ke cluster Elasticsearch melalui port 9200.

import org.apache.http.HttpEntity;
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.entity.ContentType;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.nio.entity.NStringEntity;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import java.io.IOException;
import java.util.Collections;
public class RestClientTest55 {
    public  static void main(String[]args){
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("USER NAME", "PASSWORD"));
        // Set HOST menjadi endpoint publik cluster Elasticsearch. Anda bisa mendapatkan endpoint dari halaman Informasi Dasar cluster. 
        RestClient restClient = RestClient.builder(new HttpHost("HOST", 9200))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                }).build();
        try {
            // field_01 dan field_02 adalah nama bidang, dan value_01 dan value_02 adalah nilai dari field_01 dan field_02. 
            HttpEntity entity = new NStringEntity("{\n\"field_01\" : \"value_01\"\n,\n\"field_02\" : \"value_02\"\n}", ContentType.APPLICATION_JSON);
            // index_name adalah nama indeks, type_name adalah nama tipe, dan doc_id adalah ID dokumen. 
            Response indexResponse = restClient.performRequest(
                    "PUT",
                    "/index_name/type_name/doc_id",
                    Collections.<String, String>emptyMap(),
                    entity);
            // index_name adalah nama indeks, type_name adalah nama tipe, dan doc_id adalah ID dokumen. Nama indeks, nama tipe, dan ID dokumen sama dengan yang Anda tentukan saat membuat indeks. 
            Response response = restClient.performRequest("GET", "/index_name/type_name/doc_id",
                    Collections.singletonMap("pretty", "true"));
            System.out.println(EntityUtils.toString(response.getEntity()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Parameter

Deskripsi

USER NAME

Gantilah dengan nama pengguna cluster Elasticsearch.

PASSWORD

Gantilah dengan kata sandi cluster Elasticsearch.

HOST

Gantilah dengan endpoint publik atau internal cluster Elasticsearch. Anda bisa mendapatkan endpoint dari halaman Informasi Dasar cluster. Untuk informasi lebih lanjut, lihat Lihat informasi dasar cluster.