All Products
Search
Document Center

Elasticsearch:Low Level REST Client (5.x)

Last Updated:Mar 27, 2026

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

Penting

Java Low Level REST Client 5.x hanya kompatibel dengan Alibaba Cloud Elasticsearch V5.5.3. Untuk Elasticsearch V6.3.2, lihat Java REST Client 6.3.2.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • JDK 1.8 atau versi yang lebih baru. Lihat Install a JDK.

  • Kluster Alibaba Cloud Elasticsearch V5.5.3. Lihat Create an Alibaba Cloud Elasticsearch cluster.

  • Fitur Auto Indexing diaktifkan pada kluster. Lihat Configure the YML file. Jika Auto Indexing tidak diaktifkan, kesalahan berikut akan muncul: Error

  • Akses jaringan yang dikonfigurasi antara server Java Anda dan kluster:

    • Akses Internet: Aktifkan fitur Public Network Access dan tambahkan alamat IP publik server Anda ke daftar putih alamat IP publik kluster. Lihat Configure a public or private IP address whitelist for an Elasticsearch cluster.

      Penting
      • Jika client Anda berada di jaringan rumah atau LAN perusahaan, tambahkan alamat IP egress Internet ke daftar putih, bukan alamat IP privat client tersebut.

      • Menambahkan 0.0.0.0/0 ke daftar putih memungkinkan semua alamat IPv4 publik mengakses kluster. Evaluasi risiko keamanan sebelum menggunakan pengaturan ini.

      • Entri daftar putih yang tidak ada atau salah menyebabkan error "Timeout connecting".

      • Untuk mengakses Kibana dari client, konfigurasikan daftar putih terpisah untuk Kibana. Lihat Configure a public or private IP address whitelist for Kibana.

    • Akses VPC: Gunakan titik akhir internal kluster. Secara default, 0.0.0.0/0 sudah ada dalam daftar putih alamat IP privat.

  • Proyek Java Maven.

Tambahkan dependensi Maven

Tambahkan dependensi berikut ke file pom.xml Anda. Versi client harus sesuai dengan versi kluster Elasticsearch Anda.

<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 remote (RCE) mungkin terdapat pada Apache Log4j 2. Lihat Vulnerability notice | RCE vulnerability in Apache Log4j 2.

Hubungkan ke kluster dan jalankan permintaan

Anda dapat mengunduh kode contoh lengkap.

Semua contoh terhubung ke kluster melalui Port 9200 dan menggunakan BasicCredentialsProvider untuk otentikasi.

Inisialisasi 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.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;

// Konfigurasikan kredensial
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
        new UsernamePasswordCredentials("<username>", "<password>"));

// Bangun client. Ganti <host> dengan titik akhir publik atau internal
// dari halaman Informasi Dasar kluster Anda.
RestClient restClient = RestClient.builder(new HttpHost("<host>", 9200))
        .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(
                    HttpAsyncClientBuilder httpClientBuilder) {
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        }).build();

Indeks dan ambil dokumen

Contoh berikut mengindeks sebuah dokumen lalu mengambilnya kembali:

import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.nio.entity.NStringEntity;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Response;
import java.io.IOException;
import java.util.Collections;

public class RestClientTest55 {
    public static void main(String[] args) {

        // (Inisialisasi restClient seperti yang ditunjukkan di atas)

        try {
            // Indeks dokumen dengan PUT /index_name/type_name/doc_id
            HttpEntity entity = new NStringEntity(
                    "{\n\"field_01\" : \"value_01\"\n,\n\"field_02\" : \"value_02\"\n}",
                    ContentType.APPLICATION_JSON);
            Response indexResponse = restClient.performRequest(
                    "PUT",
                    "/index_name/type_name/doc_id",
                    Collections.<String, String>emptyMap(),
                    entity);

            // Ambil dokumen dengan GET /index_name/type_name/doc_id
            Response response = restClient.performRequest(
                    "GET",
                    "/index_name/type_name/doc_id",
                    Collections.singletonMap("pretty", "true"));

            // Cetak badan respons
            System.out.println(EntityUtils.toString(response.getEntity()));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ganti placeholder berikut dengan nilai aktual Anda:

Placeholder Deskripsi
<username> Username kluster Elasticsearch
<password> Password kluster Elasticsearch
<host> Titik akhir publik atau internal kluster. Temukan informasi ini di halaman Basic Information. Lihat View the basic information of a cluster.
index_name Nama indeks
type_name Nama tipe
doc_id ID dokumen

Pemecahan Masalah

Gejala Kemungkinan penyebab Perbaikan
Timeout connecting Daftar putih alamat IP tidak ada atau salah Tambahkan alamat IP server Anda ke daftar putih kluster. Untuk akses Internet, gunakan alamat IP egress Internet, bukan alamat IP privat client.
Kesalahan pembuatan indeks Error Auto Indexing dinonaktifkan Aktifkan fitur Auto Indexing. Lihat Configure the YML file.

Langkah Berikutnya