All Products
Search
Document Center

Elasticsearch:High Level REST Client (6.3.x)

Last Updated:Mar 27, 2026

Gunakan Java High Level REST Client 6.3.x untuk memanggil Elasticsearch Java API guna mengindeks dan menghapus dokumen di kluster Alibaba Cloud Elasticsearch Anda.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menginstal JDK 1.8 atau versi yang lebih baru. Lihat Instal JDK.

  • Memiliki kluster Alibaba Cloud Elasticsearch versi 6.3.2 atau lebih baru. Java High Level REST Client kompatibel ke depan, sehingga klien versi 6.3.2 dapat berkomunikasi dengan kluster versi 6.3.2 atau lebih baru. Untuk memanfaatkan semua fitur klien secara optimal, samakan versi klien dengan versi kluster Anda. Lihat Buat kluster Alibaba Cloud Elasticsearch.

  • Mengaktifkan Auto Indexing untuk kluster. Lihat Konfigurasi file YML. Jika Auto Indexing tidak diaktifkan, kesalahan berikut akan dilaporkan. Error

  • Mengonfigurasi akses jaringan untuk kluster:

    • Akses Internet: Aktifkan fitur Public Network Access dan tambahkan alamat IP publik server ke daftar putih alamat IP publik. Jika klien Anda berada di jaringan rumah atau LAN kantor, tambahkan alamat IP egress Internet—bukan alamat IP pribadi klien—ke daftar putih. Menambahkan 0.0.0.0/0 mengizinkan semua alamat IPv4, yang menimbulkan risiko keamanan. Lihat Konfigurasi daftar putih alamat IP publik atau pribadi untuk kluster Elasticsearch.

    • Akses VPC: Gunakan titik akhir internal. Daftar putih alamat IP pribadi secara default bernilai 0.0.0.0/0, sehingga umumnya tidak diperlukan konfigurasi tambahan. Server harus berada dalam virtual private cloud (VPC) yang sama dengan kluster.

    Catatan Jika tidak ada daftar putih alamat IP yang dikonfigurasi atau konfigurasinya salah, kesalahan "Timeout connecting" akan dikembalikan. Untuk mengakses node Kibana dari klien, konfigurasikan daftar putih alamat IP terpisah untuk Kibana. Lihat Konfigurasi daftar putih alamat IP publik atau pribadi untuk Kibana.
  • Memiliki proyek Java Maven dengan dependensi POM dari bagian berikutnya yang telah ditambahkan ke file pom.xml Anda.

Tambahkan dependensi POM

Tambahkan dependensi berikut ke file pom.xml proyek Maven Anda:

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.3.2</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.3.2</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>
Penting

Kerentanan eksekusi kode remote (RCE) mungkin terdapat pada Apache Log4j. Lihat Pemberitahuan kerentanan | Kerentanan RCE pada Apache Log4j 2.

Hubungkan ke kluster

Gunakan otentikasi akses dasar dan titik akhir kluster untuk melakukan inisialisasi instans RestHighLevelClient.

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;
import org.elasticsearch.client.RestHighLevelClient;

// Siapkan otentikasi akses dasar menggunakan username dan password kluster.
// Ini adalah kredensial yang sama yang digunakan untuk masuk ke konsol Kibana.
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
    new UsernamePasswordCredentials("<username>", "<password>"));

// Bangun klien menggunakan titik akhir kluster.
// Dapatkan titik akhir dari halaman Informasi Dasar kluster.
RestClientBuilder builder = RestClient.builder(
        new HttpHost("<cluster-endpoint>", 9200, "http"))
    .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
        @Override
        public HttpAsyncClientBuilder customizeHttpClient(
                HttpAsyncClientBuilder httpClientBuilder) {
            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
        }
    });

RestHighLevelClient client = new RestHighLevelClient(builder);

Ganti placeholder berikut dengan nilai aktualnya:

Placeholder Deskripsi Di Mana Menemukannya
<username> Username kluster Ditetapkan saat membuat kluster
<password> Password kluster Ditetapkan saat membuat kluster
<cluster-endpoint> Titik akhir publik atau internal kluster Basic Information halaman kluster

Indeks dokumen

Gunakan API index untuk menambahkan dokumen ke indeks.

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import java.util.HashMap;
import java.util.Map;

// Bangun konten dokumen sebagai map.
// Ganti nama bidang dan nilainya dengan milik Anda sendiri.
Map<String, Object> document = new HashMap<>();
document.put("<field_01>", "<value_01>");
document.put("<field_02>", "<value_02>");

// Tentukan nama indeks, nama tipe, dan ID dokumen.
IndexRequest indexRequest = new IndexRequest("<index_name>", "<type_name>", "<doc_id>")
    .source(document);

IndexResponse indexResponse = client.index(indexRequest);
System.out.println("Dokumen berhasil diindeks, versi: " + indexResponse.getVersion());

Hapus dokumen

Gunakan API delete untuk menghapus dokumen berdasarkan nama indeks, nama tipe, dan ID dokumen.

import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;

// Gunakan nama indeks, nama tipe, dan ID dokumen yang sama seperti saat Anda mengindeks dokumen tersebut.
DeleteRequest deleteRequest = new DeleteRequest("<index_name>", "<type_name>", "<doc_id>");
DeleteResponse deleteResponse = client.delete(deleteRequest);
System.out.println("Dokumen berhasil dihapus.");

Contoh lengkap

Contoh berikut menggabungkan inisialisasi klien, pengindeksan dokumen, dan penghapusan dokumen menjadi satu program yang dapat dijalankan. Anda juga dapat mengunduh kode contoh lengkap.

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

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

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

        // Siapkan otentikasi akses dasar.
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("{Username}", "{Password}"));

        // Inisialisasi klien menggunakan titik akhir kluster.
        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 {
            // Indeks dokumen.
            Map<String, Object> jsonMap = new HashMap<>();
            jsonMap.put("{field_01}", "{value_01}");
            jsonMap.put("{field_02}", "{value_02}");
            IndexRequest indexRequest = new IndexRequest("{index_name}", "{type_name}", "{doc_id}")
                .source(jsonMap);
            IndexResponse indexResponse = highClient.index(indexRequest);
            System.out.println("Dokumen berhasil diindeks, versi: " + indexResponse.getVersion());

            // Hapus dokumen menggunakan nama indeks, nama tipe, dan ID dokumen yang sama.
            DeleteRequest deleteRequest = new DeleteRequest("{index_name}", "{type_name}", "{doc_id}");
            DeleteResponse deleteResponse = highClient.delete(deleteRequest);
            System.out.println("Dokumen berhasil dihapus.");

            highClient.close();

        } catch (IOException ioException) {
            // Tangani pengecualian.
        }
    }
}

Langkah selanjutnya

Untuk daftar lengkap API yang didukung, lihat dokumentasi Java High Level REST Client 6.3.