Todos os produtos
Search
Central de documentação

Lindorm:Use a JDBC driver to connect to and send SQL requests to LindormSearch

Última atualização: Jul 10, 2026

O LindormSearch oferece suporte a acesso SQL por meio do driver Solr JDBC fornecido pelo Lindorm, o que permite que aplicações Java usem interfaces JDBC padrão para criar tabelas, gravar, consultar e excluir dados.

Pré-requisitos

Antes de começar, verifique se você atende aos seguintes requisitos:

  • LindormSearch ativado na sua instância do Lindorm. Para mais informações, consulte Ativar o LindormSearch.

  • Endereço IP do cliente adicionado à lista de permissões da instância do Lindorm. Para mais informações, consulte Configure listas de permissões.

  • Endpoint SQL do cluster do LindormSearch. Para mais informações, consulte Visualize endpoints.

Adicione a dependência do Maven

Adicione a seguinte dependência ao arquivo pom.xml do seu projeto:

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

Crie uma coleção

Crie uma coleção na página Cluster Management no console do Lindorm antes de executar o código de exemplo. Para mais informações, consulte Gerencie coleções.

Parâmetros de conexão

Use os parâmetros a seguir para se conectar ao LindormSearch:

Parâmetro

Valor

Descrição

Classe do driver

com.aliyun.lindorm.search.client.Driver

Passe para Class.forName()

URL de conexão

jdbc:lindorm:search:url=http://<endpoint>:30070

Substitua <endpoint> pelo endpoint SQL do seu cluster do LindormSearch

user

Seu nome de usuário

Propriedade de autenticação

password

Sua senha

Propriedade de autenticação

Código de exemplo

O exemplo a seguir conecta-se ao LindormSearch e executa uma sequência de operações DDL e DML: cria uma tabela, insere ou atualiza linhas, consulta resultados, exclui linhas e remove a tabela.

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();
            }
        }
    }
}
Use um pool de conexões para gerenciar as conexões. O pool evita a sobrecarga de abrir e fechar uma conexão a cada operação, o que melhora o desempenho das consultas.