すべてのプロダクト
Search
ドキュメントセンター

Lindorm:JDBC ドライバーを使用して LindormSearch に接続し、SQL リクエストを送信する

最終更新日:Mar 29, 2026

LindormSearch は、Lindorm が提供する Solr JDBC ドライバーを通じて SQL アクセスをサポートしており、Java アプリケーションが標準的な JDBC インターフェイスを使用してテーブルの作成、データの書き込み・クエリ・削除を行うことができます。

前提条件

作業を開始する前に、以下の項目を確認してください。

  • Lindorm インスタンスで LindormSearch が有効になっていること。詳細については、「LindormSearch の有効化」をご参照ください。

  • ご利用のクライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。詳細については、「ホワイトリストの設定」をご参照ください。

  • LindormSearch クラスターの SQL エンドポイントです。詳細については、「エンドポイントの表示」をご参照ください。

Maven 依存関係の追加

プロジェクトの pom.xml ファイルに、次の依存関係を追加します。

<dependency>
  <groupId>com.aliyun.lindorm</groupId>
  <artifactId>lindorm-all-client</artifactId>
  <version>2.1.2</version>
</dependency>

コレクションの作成

サンプルコードを実行する前に、Lindorm コンソールの クラスター管理 ページでコレクションを作成してください。詳細については、「コレクションの管理」をご参照ください。

接続パラメーター

LindormSearch に接続するには、以下のパラメーターを使用します。

パラメーター説明
ドライバークラスcom.aliyun.lindorm.search.client.DriverClass.forName()
接続 URLjdbc:lindorm:search:url=http://<endpoint>:30070<endpoint> はご利用の LindormSearch クラスターの SQL エンドポイントに置き換えてください
userユーザー名認証プロパティ
passwordパスワード認証プロパティ

サンプルコード

以下の例では、LindormSearch に接続し、一連の DDL および DML 操作(テーブルの作成、行のアップサート、結果のクエリ、行の削除、テーブルの削除)を実行します。

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 {
            // LindormSearch JDBC ドライバーをロードします。
            Class.forName("com.aliyun.lindorm.search.client.Driver");

            // ご利用の LindormSearch クラスターの SQL エンドポイントを設定します。
            String url = "jdbc:lindorm:search:url=http://ld-xxxx:30070";

            Properties props = new Properties();
            props.put("user", "testuser");
            props.put("password", "password");

            // 接続を確立します。
            pconn = DriverManager.getConnection(url, props);

            // ステートメントを作成します。
            stmt = pconn.createStatement();

            // テーブルを作成します。
            stmt.execute("create table if not exists test(c1 int, c2 varchar, primary key(c1))");

            // 単一行を書き込みます。
            stmt.execute("upsert into test(c1,c2) values(1,'深セン')");
            stmt.execute("upsert into test(c1,c2) values(2,'上海')");

            // 複数行を書き込みます。
            stmt.execute("upsert into test(c1,c2) values(3,'北京'),(4,'広州'),(5,'杭州')");

            // すべての行をクエリします。
            ResultSet rs = stmt.executeQuery("select * from test order by c1");
            System.out.println("#####削除前:");
            while (rs.next()) {
                System.out.println("c1=" + rs.getInt("c1") + ",c2=" + rs.getString("c2"));
            }

            // c1 > 3 の行を削除します。
            stmt.execute("delete from test where c1 >3");

            // 残りの行をクエリします。
            rs = stmt.executeQuery("select * from test order by c1");
            System.out.println("#####削除後:");
            while (rs.next()) {
                System.out.println("c1=" + rs.getInt("c1") + ",c2=" + rs.getString("c2"));
            }

            // テーブルを削除します。
            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();
            }
        }
    }
}
接続を管理するには、接続プールを使用してください。接続プールを使用することで、各操作ごとに接続を確立・切断するオーバーヘッドを回避でき、クエリのパフォーマンスが向上します。