LindormSearch mendukung akses SQL melalui driver Solr JDBC yang disediakan oleh Lindorm, sehingga aplikasi Java dapat menggunakan antarmuka JDBC standar untuk membuat tabel, menulis, melakukan kueri, dan menghapus data.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mengaktifkan LindormSearch untuk instans Lindorm Anda. Untuk informasi selengkapnya, lihat Activate LindormSearch.
Menambahkan alamat IP klien Anda ke daftar putih instans Lindorm. Untuk informasi selengkapnya, lihat Configure whitelists.
Memiliki titik akhir SQL kluster LindormSearch. Untuk informasi selengkapnya, lihat View endpoints.
Tambahkan dependensi Maven
Tambahkan dependensi berikut ke file pom.xml proyek Anda:
<dependency>
<groupId>com.aliyun.lindorm</groupId>
<artifactId>lindorm-all-client</artifactId>
<version>2.1.2</version>
</dependency>Buat koleksi
Buat koleksi pada halaman Cluster Management di Konsol Lindorm sebelum menjalankan kode contoh. Untuk informasi selengkapnya, lihat Manage collections.
Parameter koneksi
Gunakan parameter berikut untuk terhubung ke LindormSearch:
| Parameter | Nilai | Deskripsi |
|---|---|---|
| Driver class | com.aliyun.lindorm.search.client.Driver | Diberikan ke Class.forName() |
| Connection URL | jdbc:lindorm:search:url=http://<endpoint>:30070 | Ganti <endpoint> dengan titik akhir SQL kluster LindormSearch Anda |
user | Username Anda | Properti autentikasi |
password | Password Anda | Properti autentikasi |
Kode contoh
Contoh berikut terhubung ke LindormSearch dan menjalankan rangkaian operasi DDL dan DML: membuat tabel, memasukkan baris, melakukan kueri hasil, menghapus baris, dan menghapus tabel.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class SearchSqlDemo {
public static void main(String[] args) {
Connection pconn = null;
Statement stmt = null;
try {
// Muat driver JDBC LindormSearch.
Class.forName("com.aliyun.lindorm.search.client.Driver");
// Tetapkan titik akhir SQL kluster LindormSearch Anda.
String url = "jdbc:lindorm:search:url=http://ld-xxxx:30070";
Properties props = new Properties();
props.put("user", "testuser");
props.put("password", "password");
// Buat koneksi.
pconn = DriverManager.getConnection(url, props);
// Buat statement.
stmt = pconn.createStatement();
// Buat tabel.
stmt.execute("create table if not exists test(c1 int, c2 varchar, primary key(c1))");
// Tulis satu baris.
stmt.execute("upsert into test(c1,c2) values(1,'Shenzhen')");
stmt.execute("upsert into test(c1,c2) values(2,'Shanghai')");
// Tulis beberapa baris.
stmt.execute("upsert into test(c1,c2) values(3,'Beijing'),(4,'Guangzhou'),(5,'Hangzhou')");
// Lakukan kueri semua baris.
ResultSet rs = stmt.executeQuery("select * from test order by c1");
System.out.println("#####before delete:");
while (rs.next()) {
System.out.println("c1=" + rs.getInt("c1") + ",c2=" + rs.getString("c2"));
}
// Hapus baris dengan c1 > 3.
stmt.execute("delete from test where c1 >3");
// Lakukan kueri baris yang tersisa.
rs = stmt.executeQuery("select * from test order by c1");
System.out.println("#####after delete:");
while (rs.next()) {
System.out.println("c1=" + rs.getInt("c1") + ",c2=" + rs.getString("c2"));
}
// Hapus tabel.
stmt.execute("drop table if exists test");
} catch (Throwable e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (pconn != null) {
pconn.close();
}
} catch (Throwable e) {
e.printStackTrace();
}
}
}
}Gunakan kolam koneksi untuk mengelola koneksi. Kolam koneksi menghindari beban pembuatan dan penutupan koneksi untuk setiap operasi, sehingga meningkatkan performa kueri.