All Products
Search
Document Center

Elasticsearch:Gunakan Java High Level REST Client 6.7.x

Last Updated:Mar 26, 2026

Java High Level REST Client 6.7.x memungkinkan Anda memanggil API Elasticsearch dari aplikasi Java. Panduan ini akan memandu Anda melalui proses penyiapan klien serta menjalankan operasi indeks dan dokumen terhadap kluster Alibaba Cloud Elasticsearch.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Catatan

Java High Level REST Client kompatibel ke depan. Misalnya, klien versi 6.7.0 dapat digunakan dengan kluster Elasticsearch versi 6.7.0 atau lebih baru. Untuk menggunakan fitur terbaru klien, sesuaikan versi klien dengan versi kluster Anda.

Akses jaringan

Konfigurasikan daftar putih alamat IP kluster agar klien dapat mengaksesnya:

  • Jaringan publik: Jika server Anda berada di internet publik, aktifkan Public Network Access untuk kluster dan tambahkan alamat IP publik server ke daftar putih alamat IP publik. Lihat Konfigurasi daftar putih alamat IP publik atau pribadi untuk kluster Elasticsearch.

    Penting
    • Jika klien berada di balik jaringan rumah atau LAN kantor, tambahkan alamat IP egress internet, bukan alamat IP pribadi klien.

    • Menambahkan 0.0.0.0/0 mengizinkan semua alamat IPv4 dan menimbulkan risiko keamanan. Evaluasi risiko tersebut sebelum menggunakan pengaturan ini.

    • Daftar putih yang tidak ada atau salah konfigurasi menyebabkan error "Timeout connecting".

    • Untuk mengakses Kibana dari klien, konfigurasikan daftar putih alamat IP terpisah untuk Kibana. Lihat Konfigurasi daftar putih alamat IP publik atau pribadi untuk Kibana.

  • VPC (virtual private cloud): Jika server Anda berada dalam VPC yang sama dengan kluster, gunakan titik akhir pribadi kluster. Secara default, 0.0.0.0/0 sudah ditambahkan ke daftar putih alamat IP pribadi.

Tambahkan dependensi POM

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

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.7.0</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 ada di Apache Log4j. Lihat Pemberitahuan kerentanan | Kerentanan RCE pada Apache Log4j 2.

Konfigurasi RequestOptions

Java REST Client 6.7.0 memperkenalkan RequestOptions berdasarkan Java REST Client 6.3.2, yang memungkinkan Anda mengatur opsi per permintaan tanpa memengaruhi pemrosesan permintaan. Di lingkungan Java Virtual Machine (JVM) dengan memori terbatas, gunakan RequestOptions untuk membatasi ukuran cache respons asinkron:

private static final RequestOptions COMMON_OPTIONS;

static {
    RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();

    // Ukuran cache default adalah 100 MiB. Ubah menjadi 30 MiB.
    builder.setHttpAsyncResponseConsumerFactory(
            new HttpAsyncResponseConsumerFactory
                    .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024));
    COMMON_OPTIONS = builder.build();
}

Teruskan COMMON_OPTIONS saat mengeksekusi permintaan:

IndexResponse indexResponse = highClient.index(indexRequest, COMMON_OPTIONS);

Untuk referensi lengkap API RequestOptions, lihat Referensi RequestOptions Elasticsearch.

Contoh

Unduh kode contoh lengkap.

Contoh berikut membuat RestHighLevelClient, mengindeks dokumen, lalu menghapusnya. Contoh ini menggunakan COMMON_OPTIONS untuk membatasi ukuran cache respons asinkron menjadi 30 MiB.

Ganti setiap placeholder yang diapit oleh {} dengan nilai aktual Anda. Lihat komentar inline untuk detailnya.

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

    private static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();

        // Ukuran cache default adalah 100 MiB. Ubah menjadi 30 MiB.
        builder.setHttpAsyncResponseConsumerFactory(
                new HttpAsyncResponseConsumerFactory
                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }

    public static void main(String[] args) {
        // Konfigurasikan otentikasi akses dasar menggunakan kredensial kluster.
        // Gunakan username dan password yang ditetapkan saat Anda membuat kluster.
        // Kredensial yang sama digunakan untuk masuk ke Konsol Kibana.
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("{Username}", "{Password}"));

        // Bangun klien. Dapatkan titik akhir kluster dari halaman Informasi Dasar.
        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);
                    }
                });

        // Buat klien tingkat tinggi dari builder klien tingkat rendah.
        RestHighLevelClient highClient = new RestHighLevelClient(builder);

        try {
            // Bangun permintaan indeks.
            // field_01 dan field_02 adalah nama bidang; value_01 dan value_02 adalah nilainya.
            Map<String, Object> jsonMap = new HashMap<>();
            jsonMap.put("{field_01}", "{value_01}");
            jsonMap.put("{field_02}", "{value_02}");

            // index_name: nama indeks. type_name: nama tipe. doc_id: ID dokumen.
            IndexRequest indexRequest =
                    new IndexRequest("{index_name}", "{type_name}", "{doc_id}").source(jsonMap);

            // Indeks dokumen menggunakan RequestOptions kustom.
            IndexResponse indexResponse = highClient.index(indexRequest, COMMON_OPTIONS);
            long version = indexResponse.getVersion();
            System.out.println("Dokumen berhasil diindeks! " + version);

            // Hapus dokumen. Gunakan nama indeks, nama tipe, dan ID dokumen yang sama.
            DeleteRequest request =
                    new DeleteRequest("{index_name}", "{type_name}", "{doc_id}");
            DeleteResponse deleteResponse = highClient.delete(request, COMMON_OPTIONS);
            System.out.println("Dokumen berhasil dihapus! \n"
                    + deleteResponse.toString() + "\n" + deleteResponse.status());

            highClient.close();

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

Langkah selanjutnya

Untuk referensi API lengkap Java High Level REST Client, lihat dokumentasi resmi Java High Level REST Client Elasticsearch.