Tous les produits
Search
Centre de documentation

Lindorm:Utiliser un pilote JDBC pour se connecter à LindormSearch et envoyer des requêtes SQL

Dernière mise à jour :Aug 27, 2026

LindormSearch prend en charge l'accès SQL via le pilote Solr JDBC fourni par Lindorm. Les applications Java peuvent ainsi utiliser les interfaces JDBC standard pour créer des tables, écrire, interroger et supprimer des données.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Activé LindormSearch pour votre instance Lindorm. Pour plus d'informations, consultez la rubrique Activer LindormSearch

  • Ajouté l'adresse IP de votre client à la liste d'autorisation de l'instance Lindorm. Pour plus d'informations, consultez la rubrique Configurer les listes d'autorisation

  • Récupéré l'endpoint SQL du cluster LindormSearch. Pour plus d'informations, consultez la rubrique Afficher les endpoints

Ajouter la dépendance Maven

Ajoutez la dépendance suivante au fichier pom.xml de votre projet :

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

Créer une collection

Créez une collection sur la page Cluster Management de la console Lindorm avant d'exécuter l'exemple de code. Pour plus d'informations, consultez la rubrique Gérer les collections.

Paramètres de connexion

Utilisez les paramètres suivants pour vous connecter à LindormSearch :

Paramètre Valeur Description
Classe du pilote com.aliyun.lindorm.search.client.Driver À transmettre à Class.forName()
URL de connexion jdbc:lindorm:search:url=http://<endpoint>:30070 Remplacez <endpoint> par l'endpoint SQL de votre cluster LindormSearch
user Votre nom d'utilisateur Propriété d'authentification
password Votre mot de passe Propriété d'authentification

Exemple de code

L'exemple suivant établit une connexion à LindormSearch et exécute une série d'opérations DDL et DML : création d'une table, insertion ou mise à jour de lignes (upsert), interrogation des résultats, suppression de lignes et suppression de la table.

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 {
            // Load the LindormSearch JDBC driver.
            Class.forName("com.aliyun.lindorm.search.client.Driver");

            // Set the SQL endpoint of your LindormSearch cluster.
            String url = "jdbc:lindorm:search:url=http://ld-xxxx:30070";

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

            // Establish a connection.
            pconn = DriverManager.getConnection(url, props);

            // Create a statement.
            stmt = pconn.createStatement();

            // Create a table.
            stmt.execute("create table if not exists test(c1 int, c2 varchar, primary key(c1))");

            // Write a single row.
            stmt.execute("upsert into test(c1,c2) values(1,'Shenzhen')");
            stmt.execute("upsert into test(c1,c2) values(2,'Shanghai')");

            // Write multiple rows.
            stmt.execute("upsert into test(c1,c2) values(3,'Beijing'),(4,'Guangzhou'),(5,'Hangzhou')");

            // Query all rows.
            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"));
            }

            // Delete rows where c1 > 3.
            stmt.execute("delete from test where c1 >3");

            // Query remaining rows.
            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"));
            }

            // Drop the table.
            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();
            }
        }
    }
}
Utilisez un pool de connexions pour gérer les connexions. Un pool de connexions évite la surcharge liée à l'établissement et à la fermeture d'une connexion pour chaque opération, ce qui améliore les performances des requêtes.