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

Lindorm:JDBC ドライバーを使用した LindormSearch への接続と SQL リクエストの送信

最終更新日:Aug 28, 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.Driver Class.forName() に渡します。
接続URL jdbc: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))");

            // 1行のデータを書き込みます。
            stmt.execute("upsert into test(c1,c2) values(1,'Shenzhen')");
            stmt.execute("upsert into test(c1,c2) values(2,'Shanghai')");

            // 複数行のデータを書き込みます。
            stmt.execute("upsert into test(c1,c2) values(3,'Beijing'),(4,'Guangzhou'),(5,'Hangzhou')");

            // すべての行をクエリします。
            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"));
            }

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

            // 残りの行をクエリします。
            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"));
            }

            // テーブルをドロップします。
            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();
            }
        }
    }
}
接続プールを使用して接続を管理してください。接続プールを使用すると、操作ごとに接続を確立およびクローズするオーバーヘッドが回避され、クエリパフォーマンスが向上します。