Skip to content

Commit c6a22a2

Browse files
committed
jdbc support
1 parent 3ff3095 commit c6a22a2

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

src/main/java/com/alibaba/druid/pool/ElasticSearchConnection.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212
import java.net.URL;
1313
import java.net.UnknownHostException;
1414
import java.sql.*;
15-
import java.util.Calendar;
16-
import java.util.Map;
17-
import java.util.Properties;
15+
import java.sql.Date;
16+
import java.util.*;
1817
import java.util.concurrent.Executor;
1918

2019
/**
@@ -25,14 +24,21 @@ public class ElasticSearchConnection implements Connection {
2524
private Client client;
2625

2726
public ElasticSearchConnection(String jdbcUrl) {
28-
String hostAndPort = jdbcUrl.split("/")[2];
29-
String host = hostAndPort.split(":")[0];
30-
String port = hostAndPort.split(":")[1];
27+
28+
3129
Settings settings = Settings.builder().put("client.transport.ignore_cluster_name", true).build();
32-
Connection conn = null;
3330
try {
34-
client = TransportClient.builder().settings(settings).build().
35-
addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), Integer.parseInt(port)));
31+
TransportClient transportClient = TransportClient.builder().settings(settings).build();
32+
33+
String hostAndPortArrayStr = jdbcUrl.split("/")[2];
34+
String[] hostAndPortArray = hostAndPortArrayStr.split(",");
35+
36+
for (String hostAndPort : hostAndPortArray) {
37+
String host = hostAndPort.split(":")[0];
38+
String port = hostAndPort.split(":")[1];
39+
transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), Integer.parseInt(port)));
40+
}
41+
client = transportClient;
3642
} catch (UnknownHostException e) {
3743
e.printStackTrace();
3844
}

src/test/java/org/nlpcn/es4sql/JDBCTests.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
import com.alibaba.druid.pool.DruidDataSource;
55

66
import com.alibaba.druid.pool.ElasticSearchDruidDataSourceFactory;
7+
import org.junit.Assert;
78
import org.junit.Test;
9+
810
import java.sql.*;
11+
import java.util.ArrayList;
12+
import java.util.List;
913
import java.util.Properties;
1014

1115
/**
@@ -15,19 +19,23 @@ public class JDBCTests {
1519
@Test
1620
public void testJDBC() throws Exception {
1721
Properties properties = new Properties();
18-
properties.put("url", "jdbc:elasticsearch://127.0.0.1:9300/twitter2");
22+
properties.put("url", "jdbc:elasticsearch://127.0.0.1:9300/" + TestsConstants.TEST_INDEX);
1923
DruidDataSource dds = (DruidDataSource) ElasticSearchDruidDataSourceFactory.createDataSource(properties);
20-
dds.setInitialSize(1);
2124
Connection connection = dds.getConnection();
22-
PreparedStatement ps = connection.prepareStatement("SELECT split(trim(concat_ws('dd',newtype,num_d)),'dd')[0] as nt from twitter2");
25+
PreparedStatement ps = connection.prepareStatement("SELECT gender,lastname,age from " + TestsConstants.TEST_INDEX + " where lastname='Heath'");
2326
ResultSet resultSet = ps.executeQuery();
27+
List<String> result = new ArrayList<String>();
2428
while (resultSet.next()) {
25-
System.out.println(resultSet.getString("nt"));
29+
result.add(resultSet.getString("lastname") + "," + resultSet.getInt("age") + "," + resultSet.getString("gender"));
2630
}
2731

2832
ps.close();
2933
connection.close();
3034
dds.close();
35+
36+
Assert.assertTrue(result.size()==2);
37+
Assert.assertTrue(result.get(0).equals("Heath,39,F"));
38+
Assert.assertTrue(result.get(1).equals("Heath,39,F"));
3139
}
3240

3341
}

src/test/java/org/nlpcn/es4sql/MainTestSuite.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
ShowTest.class,
3939
CSVResultsExtractorTests.class,
4040
SourceFieldTest.class,
41-
SQLFunctionsTest.class
41+
SQLFunctionsTest.class,
42+
JDBCTests.class
4243
})
4344
public class MainTestSuite {
4445

src/test/java/org/nlpcn/es4sql/SQLFunctionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public void concat_ws_field_and_string() throws Exception {
129129
@Test
130130
public void test() throws Exception {
131131

132-
String query = "select case when ty=0 then '云点播CV' when ty=1 then '云直播CV' end as tyname,sum(cv) as cv from cloud_play_stat_cust where day='20160906' group by tyname";
132+
String query = "SELECT gender,lastname,age from " + TestsConstants.TEST_INDEX + " where lastname='Heath'";
133133

134134
SearchDao searchDao = MainTestSuite.getSearchDao() != null ? MainTestSuite.getSearchDao() : getSearchDao();
135135
System.out.println(searchDao.explain(query).explain().explain());

0 commit comments

Comments
 (0)