spuerx 9 anos atrás
pai
commit
d5af313411

+ 1 - 1
create_index.sh

@@ -5,7 +5,7 @@ curl -XPUT 'http://192.168.0.109:9200/index/' -d '{
 	"settings": {
 	"settings": {
 		"index": {
 		"index": {
 			"number_of_shards": 1,
 			"number_of_shards": 1,
-			"number_of_replicas": 3
+			"number_of_replicas": 0
 		}
 		}
 	},
 	},
 	"mappings": {
 	"mappings": {

+ 2 - 2
src/main/java/org/elasticsearch/jdbc/ElasticDriver.java

@@ -27,8 +27,8 @@ public class ElasticDriver implements Driver {
 
 
     @Override
     @Override
     public Connection connect(String url, Properties info) throws SQLException {
     public Connection connect(String url, Properties info) throws SQLException {
-        String ipUrl = url.substring(ELASTIC_SEARCH_DRIVER_PREFIX.length() - 1);
-        Client client = TransportClientFactory.createTransportClientFromUrl(url);
+        String ipUrl = url.substring(ELASTIC_SEARCH_DRIVER_PREFIX.length());
+        Client client = TransportClientFactory.createTransportClientFromUrl(ipUrl);
         return new ElasticConnection(url, info, client);
         return new ElasticConnection(url, info, client);
     }
     }
 
 

+ 1 - 0
src/main/java/org/elasticsearch/jdbc/ElasticStatement.java

@@ -23,6 +23,7 @@ public class ElasticStatement extends AbstractStatement {
     public ResultSet executeQuery(String sql) throws SQLException {
     public ResultSet executeQuery(String sql) throws SQLException {
         ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
         ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
         ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
         ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
+
         SearchRequestBuilder searchRequest = parseResult.toRequest(connection.getClient());
         SearchRequestBuilder searchRequest = parseResult.toRequest(connection.getClient());
         SearchResponse searchResponse = searchRequest.execute().actionGet();
         SearchResponse searchResponse = searchRequest.execute().actionGet();
 
 

+ 4 - 0
src/main/java/org/elasticsearch/jdbc/SearchActionExecutor.java

@@ -0,0 +1,4 @@
+package org.elasticsearch.jdbc;
+
+public class SearchActionExecutor {
+}

+ 28 - 9
src/main/java/org/elasticsearch/jdbc/TransportClientFactory.java

@@ -1,16 +1,20 @@
 package org.elasticsearch.jdbc;
 package org.elasticsearch.jdbc;
 
 
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Maps;
 import org.elasticsearch.client.transport.TransportClient;
 import org.elasticsearch.client.transport.TransportClient;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 
 
 import java.net.InetSocketAddress;
 import java.net.InetSocketAddress;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 public class TransportClientFactory {
 public class TransportClientFactory {
 
 
     private static final String COMMA = ",";
     private static final String COMMA = ",";
+    private static final String COLON = ":";
+    private static final int DEFAULT_ES_PORT = 9300;
 
 
     private static final Map<String, TransportClient> clientMap = Maps.newConcurrentMap();
     private static final Map<String, TransportClient> clientMap = Maps.newConcurrentMap();
 
 
@@ -23,19 +27,34 @@ public class TransportClientFactory {
             return clientMap.get(url);
             return clientMap.get(url);
         }
         }
 
 
-        String[] connStringList = url.split(COMMA);
-        for (String connStr : connStringList) {
-            String[] connArr = connStr.split(":");
+        Settings.Builder settingBuilder = Settings.settingsBuilder();
+        settingBuilder.put("client.transport.sniff", true);
+
+        String hostListString = url;
+        int clusterNamePosIdx = url.lastIndexOf("/");
+        if (clusterNamePosIdx >= 0) {
+            hostListString = hostListString.substring(0, clusterNamePosIdx);
+            settingBuilder.put("cluster.name", url.substring(clusterNamePosIdx + 1));
+        }
+        else {
+            settingBuilder.put("client.transport.ignore_cluster_name", true);
         }
         }
 
 
+        List<InetSocketTransportAddress> addressList = Lists.newLinkedList();
 
 
-        Settings settings = Settings.settingsBuilder()
-                .put("cluster.name", "elasticsearch_wenbronk")
-                .put("client.transport.sniff", true)
-                .build();
+        String[] connStringList = hostListString.split(COMMA);
+        for (String connStr : connStringList) {
+            String[] connArr = connStr.split(COLON);
+            if (connArr.length == 1) {
+                addressList.add(new InetSocketTransportAddress(new InetSocketAddress(connArr[0], DEFAULT_ES_PORT)));
+            }
+            else {
+                addressList.add(new InetSocketTransportAddress(new InetSocketAddress(connArr[0], Integer.parseInt(connArr[1]))));
+            }
+        }
 
 
-        TransportClient transportClient = TransportClient.builder().settings(settings).build()
-                .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.50.37", 9300)));
+        TransportClient transportClient = TransportClient.builder().settings(settingBuilder).build()
+                .addTransportAddresses(addressList.toArray(new InetSocketTransportAddress[addressList.size()]));
 
 
         clientMap.put(url, transportClient);
         clientMap.put(url, transportClient);
 
 

+ 2 - 2
src/test/java/org/elasticsearch/jdbc/ElasticDriverTest.java

@@ -11,7 +11,7 @@ import java.util.Enumeration;
 
 
 public class ElasticDriverTest {
 public class ElasticDriverTest {
     private static final String driver = "org.elasticsearch.jdbc.ElasticDriver";
     private static final String driver = "org.elasticsearch.jdbc.ElasticDriver";
-    private static final String url = "jdbc:elastic:192.168.0.1:9200";
+    private static final String url = "jdbc:elastic:192.168.0.109:9300/judge_cluster";
 
 
 
 
     @Test
     @Test
@@ -51,7 +51,7 @@ public class ElasticDriverTest {
         dataSource.setDriverClassName(driver);
         dataSource.setDriverClassName(driver);
 
 
         Connection connection = dataSource.getConnection();
         Connection connection = dataSource.getConnection();
-        ResultSet resultSet = connection.createStatement().executeQuery("select * from reserve_record.rsr_plan_work_inst where id > 0");
+        ResultSet resultSet = connection.createStatement().executeQuery("select * from index.library where manager.managerName='lcy'");
 
 
         while(resultSet.next()) {
         while(resultSet.next()) {
             String json = resultSet.getString(1);
             String json = resultSet.getString(1);