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 |
|
Passe para |
|
URL de conexão |
|
Substitua |
|
|
Seu nome de usuário |
Propriedade de autenticação |
|
|
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.