All Products
Search
Document Center

Elasticsearch:Transport Client (5.x)

Last Updated:Jul 02, 2025

Tema ini menjelaskan cara menggunakan Transport Client 5.3.3 untuk mengakses kluster Alibaba Cloud Elasticsearch V5.X.

Perhatian

  • Disarankan untuk menggunakan Transport Client 5.3.3 saat mengakses kluster Elasticsearch. Jika Anda menggunakan Transport Client versi 5.5 atau 5.6, pesan kesalahan "NoNodeAvailableException" akan muncul.

  • Transport Client berkomunikasi dengan kluster Elasticsearch melalui TCP. Ketidakcocokan versi antara Transport Client dan kluster Elasticsearch dapat menyebabkan masalah kompatibilitas. Dalam versi terbaru Elasticsearch open source, Transport Client sudah tidak digunakan lagi. Kami menyarankan Anda menggunakan Java Low Level REST Client untuk memastikan kompatibilitas versi.

Persiapan

  • Instal JDK dengan versi minimal 1.8.

    Untuk informasi lebih lanjut, lihat Instal JDK.

  • Buat kluster Alibaba Cloud Elasticsearch V5.5.3.

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

  • Aktifkan fitur Auto Indexing pada kluster 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 kluster Elasticsearch guna memastikan komunikasi jaringan yang normal.

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

      Penting
      • Jika klien Anda berada di jaringan rumah atau LAN kantor, tambahkan 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. Namun, konfigurasi ini memiliki risiko keamanan karena semua alamat IP publik dapat mengakses kluster. Evaluasi risiko sebelum melakukan konfigurasi ini sangat disarankan.

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

      • Untuk mengakses node Kibana di kluster Anda dari klien, konfigurasikan 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 kluster Elasticsearch, Anda dapat mengakses kluster menggunakan titik akhir internalnya. Pastikan alamat IP privat server telah ditambahkan ke daftar putih alamat IP privat kluster. 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

<repositories>
    <!-- tambahkan repositori elasticsearch -->
    <repository>
        <id>elasticsearch-releases</id>
        <url>https://artifacts.elastic.co/maven</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>5.3.3</version>
     </dependency>
     <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.3.3</version>
     </dependency>
     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7.1</version>
     </dependency>
     <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7.1</version>
     </dependency>
</dependencies>
Penting

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

Contoh

Unduh kode sampel lengkap.

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import static org.elasticsearch.common.xcontent.XContentFactory.*;

import java.net.InetAddress;

public class TransportClientDemo {

    public static void main(String[] args) {
        try {
            TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
                    .put("cluster.name", "es-cn-n6w1rux8i000w****") // Atur nilainya menjadi ID kluster Elasticsearch.
                    .put("xpack.security.user", "elastic:es_password") // Atur nilainya menjadi nama pengguna dan kata sandi yang digunakan untuk mengakses kluster Elasticsearch.
                    . put("client.transport.sniff", false) // Atur nilainya menjadi false.
                    .build())
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com"), 9300));// Tentukan titik akhir dan nomor port yang digunakan untuk mengakses kluster Elasticsearch.

            // Anda dapat memodifikasi kode berikut berdasarkan kebutuhan bisnis Anda. Misalnya, Anda dapat mengubah nama indeks, tipe indeks, dan ID dokumen.
            IndexResponse idxResp3 = client.prepareIndex("test_index", "test_type", "333")
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("user_id", "333")
                            .field("email", "a***@aliyun.com")
                            .endObject()
                    )
                    .get();

            System.out.println(idxResp3.toString());


            GetResponse getResp =
                    client.prepareGet().setIndex("test_index").setType("test_type").setId("333").execute().get();
            System.out.println(getResp.getSourceAsString());
            client.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Parameter

Deskripsi

cluster.name

Atur nilainya menjadi ID kluster Elasticsearch. Anda bisa mendapatkan ID tersebut dari halaman Informasi Dasar kluster. Untuk informasi lebih lanjut, lihat Lihat informasi dasar kluster.

client.transport.sniff

Atur nilainya menjadi false.

xpack.security.user

Atur nilainya menjadi nama pengguna dan kata sandi yang digunakan untuk mengakses kluster Elasticsearch. Nama pengguna default adalah elastic. Kata sandi ditentukan saat Anda membuat kluster. Jika Anda lupa kata sandi, Anda dapat menyetel ulang. Untuk informasi lebih lanjut tentang prosedur dan perhatian saat menyetel ulang kata sandi, lihat Setel ulang kata sandi akses untuk kluster Elasticsearch.

InetAddress.getByName()

Tentukan titik akhir dan nomor port yang digunakan untuk mengakses kluster Elasticsearch.

Penting

Titik akhir tidak boleh dimulai dengan http.