AE86 vor 3 Jahren
Ursprung
Commit
f7f79757c3

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/ConnectorConfigChecker.java

@@ -1,17 +1,17 @@
 package org.dbsyncer.biz.checker;
 
-import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.TableGroup;
 
 import java.util.Map;
 
 /**
+ * @param <C> ConnectorConfig
  * @author AE86
  * @version 1.0.0
  * @date 2020/1/7 23:17
  */
-public interface ConnectorConfigChecker {
+public interface ConnectorConfigChecker<C> {
 
     /**
      * 处理增量同步策略
@@ -24,10 +24,10 @@ public interface ConnectorConfigChecker {
     /**
      * 修改配置
      *
-     * @param connector
+     * @param connectorConfig
      * @param params
      * @return
      */
-    void modify(Connector connector, Map<String, String> params);
+    void modify(C connectorConfig, Map<String, String> params);
 
 }

+ 9 - 13
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/AbstractDataBaseConfigChecker.java

@@ -2,8 +2,6 @@ package org.dbsyncer.biz.checker.impl.connector;
 
 import org.dbsyncer.biz.checker.ConnectorConfigChecker;
 import org.dbsyncer.connector.config.DatabaseConfig;
-import org.dbsyncer.parser.model.Connector;
-import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
 import java.util.Map;
@@ -13,10 +11,10 @@ import java.util.Map;
  * @version 1.0.0
  * @date 2020/1/8 15:17
  */
-public abstract class AbstractDataBaseConfigChecker implements ConnectorConfigChecker {
+public abstract class AbstractDataBaseConfigChecker implements ConnectorConfigChecker<DatabaseConfig> {
 
     @Override
-    public void modify(Connector connector, Map<String, String> params) {
+    public void modify(DatabaseConfig connectorConfig, Map<String, String> params) {
         String username = params.get("username");
         String password = params.get("password");
         String url = params.get("url");
@@ -26,21 +24,19 @@ public abstract class AbstractDataBaseConfigChecker implements ConnectorConfigCh
         Assert.hasText(url, "Url is empty.");
         Assert.hasText(driverClassName, "DriverClassName is empty.");
 
-        DatabaseConfig config = (DatabaseConfig) connector.getConfig();
-        config.setUsername(username);
-        config.setPassword(password);
-        config.setUrl(url);
-        config.setDriverClassName(driverClassName);
+        connectorConfig.setUsername(username);
+        connectorConfig.setPassword(password);
+        connectorConfig.setUrl(url);
+        connectorConfig.setDriverClassName(driverClassName);
     }
 
-    protected void modifyDql(Connector connector, Map<String, String> params) {
+    protected void modifyDql(DatabaseConfig connectorConfig, Map<String, String> params) {
         String sql = params.get("sql");
         String table = params.get("table");
         Assert.hasText(sql, "Sql is empty.");
         Assert.hasText(table, "Table is empty.");
-        DatabaseConfig config = (DatabaseConfig) connector.getConfig();
-        config.setSql(sql);
-        config.setTable(table);
+        connectorConfig.setSql(sql);
+        connectorConfig.setTable(table);
     }
 
 }

+ 6 - 5
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/ConnectorChecker.java

@@ -52,13 +52,14 @@ public class ConnectorChecker extends AbstractChecker {
         Connector connector = new Connector();
         connector.setName(name);
         connector.setType(ConfigConstant.CONNECTOR);
-        setConfig(connector, connectorType);
+        ConnectorConfig config = getConfig(connectorType);
+        connector.setConfig(config);
 
         // 配置连接器配置
         String type = StringUtil.toLowerCaseFirstOne(connectorType).concat("ConfigChecker");
         ConnectorConfigChecker checker = map.get(type);
         Assert.notNull(checker, "Checker can not be null.");
-        checker.modify(connector, params);
+        checker.modify(config, params);
 
         // 获取表
         setTable(connector);
@@ -85,7 +86,7 @@ public class ConnectorChecker extends AbstractChecker {
         String type = StringUtil.toLowerCaseFirstOne(config.getConnectorType()).concat("ConfigChecker");
         ConnectorConfigChecker checker = map.get(type);
         Assert.notNull(checker, "Checker can not be null.");
-        checker.modify(connector, params);
+        checker.modify(config, params);
 
         // 获取表
         setTable(connector);
@@ -93,13 +94,13 @@ public class ConnectorChecker extends AbstractChecker {
         return connector;
     }
 
-    private void setConfig(Connector connector, String connectorType) {
+    private ConnectorConfig getConfig(String connectorType) {
         Class<ConnectorConfig> configClass = (Class<ConnectorConfig>) ConnectorEnum.getConfigClass(connectorType);
         Assert.notNull(configClass, String.format("不支持该连接器类型:%s", connectorType));
         try {
             ConnectorConfig config = configClass.newInstance();
             config.setConnectorType(connectorType);
-            connector.setConfig(config);
+            return config;
         } catch (Exception e) {
             logger.error(e.getMessage());
             throw new BizException("获取连接器配置异常.");

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/DqlMysqlConfigChecker.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.biz.checker.impl.connector;
 
-import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.connector.config.DatabaseConfig;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -14,8 +14,8 @@ import java.util.Map;
 public class DqlMysqlConfigChecker extends AbstractDataBaseConfigChecker {
 
     @Override
-    public void modify(Connector connector, Map<String, String> params) {
-        super.modify(connector, params);
-        super.modifyDql(connector, params);
+    public void modify(DatabaseConfig connectorConfig, Map<String, String> params) {
+        super.modify(connectorConfig, params);
+        super.modifyDql(connectorConfig, params);
     }
 }

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/DqlOracleConfigChecker.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.biz.checker.impl.connector;
 
-import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.connector.config.DatabaseConfig;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -14,8 +14,8 @@ import java.util.Map;
 public class DqlOracleConfigChecker extends AbstractDataBaseConfigChecker {
 
     @Override
-    public void modify(Connector connector, Map<String, String> params) {
-        super.modify(connector, params);
-        super.modifyDql(connector, params);
+    public void modify(DatabaseConfig connectorConfig, Map<String, String> params) {
+        super.modify(connectorConfig, params);
+        super.modifyDql(connectorConfig, params);
     }
 }

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/DqlSqlServerConfigChecker.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.biz.checker.impl.connector;
 
-import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.connector.config.DatabaseConfig;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -14,8 +14,8 @@ import java.util.Map;
 public class DqlSqlServerConfigChecker extends AbstractDataBaseConfigChecker {
 
     @Override
-    public void modify(Connector connector, Map<String, String> params) {
-        super.modify(connector, params);
-        super.modifyDql(connector, params);
+    public void modify(DatabaseConfig connectorConfig, Map<String, String> params) {
+        super.modify(connectorConfig, params);
+        super.modifyDql(connectorConfig, params);
     }
 }

+ 40 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/ElasticSearchConfigChecker.java

@@ -0,0 +1,40 @@
+package org.dbsyncer.biz.checker.impl.connector;
+
+import org.dbsyncer.biz.checker.ConnectorConfigChecker;
+import org.dbsyncer.connector.config.ESConfig;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+import java.util.Map;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2021/8/25 23:30
+ */
+@Component
+public class ElasticSearchConfigChecker implements ConnectorConfigChecker<ESConfig> {
+
+    @Override
+    public void modify(ESConfig connectorConfig, Map<String, String> params) {
+        String username = params.get("username");
+        String password = params.get("password");
+        String index = params.get("index");
+        String type = params.get("type");
+        String url = params.get("url");
+        String schema = params.get("schema");
+        Assert.hasText(username, "Username is empty.");
+        Assert.hasText(password, "Password is empty.");
+        Assert.hasText(index, "Index is empty.");
+        Assert.hasText(type, "Type is empty.");
+        Assert.hasText(url, "Url is empty.");
+        Assert.hasText(schema, "Schema is empty.");
+
+        connectorConfig.setUsername(username);
+        connectorConfig.setPassword(password);
+        connectorConfig.setIndex(index);
+        connectorConfig.setType(type);
+        connectorConfig.setUrl(url);
+        connectorConfig.setSchema(schema);
+    }
+}

+ 2 - 2
dbsyncer-connector/src/main/java/org/dbsyncer/connector/Connector.java

@@ -9,11 +9,11 @@ import java.util.Map;
 /**
  * 连接器基础功能
  *
+ * @param <M> ConnectorMapper
+ * @param <C> ConnectorConfig
  * @author AE86
  * @version 1.0.0
  * @date 2019/9/18 23:30
- * @param <M> ConnectorMapper
- * @param <C> ConnectorConfig
  */
 public interface Connector<M, C> {
 

+ 5 - 5
dbsyncer-connector/src/main/java/org/dbsyncer/connector/config/ESConfig.java

@@ -11,7 +11,7 @@ public class ESConfig extends ConnectorConfig {
     /**
      * 集群地址192.168.1.100:9200,192.168.1.200:9200
      */
-    private String clusterNodes;
+    private String url;
 
     /**
      * 协议9200(http),9300(tcp)
@@ -38,12 +38,12 @@ public class ESConfig extends ConnectorConfig {
      */
     private String type;
 
-    public String getClusterNodes() {
-        return clusterNodes;
+    public String getUrl() {
+        return url;
     }
 
-    public void setClusterNodes(String clusterNodes) {
-        this.clusterNodes = clusterNodes;
+    public void setUrl(String url) {
+        this.url = url;
     }
 
     public String getSchema() {

+ 16 - 24
dbsyncer-connector/src/main/java/org/dbsyncer/connector/es/ESConnector.java

@@ -8,8 +8,6 @@ import org.dbsyncer.connector.ConnectorException;
 import org.dbsyncer.connector.ConnectorMapper;
 import org.dbsyncer.connector.config.*;
 import org.dbsyncer.connector.util.ESUtil;
-import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
-import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
 import org.elasticsearch.action.bulk.BulkRequest;
 import org.elasticsearch.action.bulk.BulkResponse;
 import org.elasticsearch.action.delete.DeleteRequest;
@@ -19,8 +17,9 @@ import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.update.UpdateRequest;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.indices.GetIndexRequest;
+import org.elasticsearch.client.indices.GetIndexResponse;
 import org.elasticsearch.cluster.metadata.MappingMetaData;
-import org.elasticsearch.common.collect.ImmutableOpenMap;
 import org.elasticsearch.common.xcontent.StatusToXContentObject;
 import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.rest.RestStatus;
@@ -60,26 +59,23 @@ public final class ESConnector extends AbstractConnector implements Connector<ES
 
     @Override
     public String getConnectorMapperCacheKey(ESConfig config) {
-        return String.format("%s-%s", config.getClusterNodes(), config.getUsername());
+        return String.format("%s-%s", config.getUrl(), config.getUsername());
     }
 
     @Override
     public List<String> getTable(ESConnectorMapper connectorMapper) {
-        ESConfig config = connectorMapper.getConfig();
-        List<String> tables = new ArrayList<>();
         try {
+            ESConfig config = connectorMapper.getConfig();
             GetIndexRequest request = new GetIndexRequest();
-            request.indices(config.getIndex());
             GetIndexResponse indexResponse = connectorMapper.getConnection().indices().get(request, RequestOptions.DEFAULT);
-            ImmutableOpenMap<String, MappingMetaData> typeMap = indexResponse.getMappings().get(config.getIndex());
-            if (null != typeMap || 0 < typeMap.size()) {
-                typeMap.keysIt().forEachRemaining(type -> tables.add(type));
-            }
+            MappingMetaData mappingMetaData = indexResponse.getMappings().get(config.getIndex());
+            List<String> tables = new ArrayList<>();
+            tables.add(mappingMetaData.type());
+            return tables;
         } catch (IOException e) {
             logger.error(e.getMessage());
             throw new ConnectorException(e);
         }
-        return tables;
     }
 
     @Override
@@ -87,11 +83,9 @@ public final class ESConnector extends AbstractConnector implements Connector<ES
         ESConfig config = connectorMapper.getConfig();
         List<Field> fields = new ArrayList<>();
         try {
-            GetIndexRequest request = new GetIndexRequest();
-            request.indices(config.getIndex());
+            GetIndexRequest request = new GetIndexRequest(config.getIndex());
             GetIndexResponse indexResponse = connectorMapper.getConnection().indices().get(request, RequestOptions.DEFAULT);
-            ImmutableOpenMap<String, MappingMetaData> typeMap = indexResponse.getMappings().get(config.getIndex());
-            MappingMetaData mappingMetaData = typeMap.get(tableName);
+            MappingMetaData mappingMetaData = indexResponse.getMappings().get(config.getIndex());
             Map<String, Object> propertiesMap = mappingMetaData.getSourceAsMap();
             Map<String, Map> properties = (Map<String, Map>) propertiesMap.get(ESUtil.PROPERTIES);
             if (CollectionUtils.isEmpty(properties)) {
@@ -121,15 +115,13 @@ public final class ESConnector extends AbstractConnector implements Connector<ES
 
     @Override
     public long getCount(ESConnectorMapper connectorMapper, Map<String, String> command) {
-        ESConfig config = connectorMapper.getConfig();
-        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
-        sourceBuilder.trackTotalHits(true);
-        sourceBuilder.from(0);
-        sourceBuilder.size(0);
-        SearchRequest request = new SearchRequest();
-        request.indices(config.getIndex());
-        request.source(sourceBuilder);
         try {
+            ESConfig config = connectorMapper.getConfig();
+            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
+            sourceBuilder.trackTotalHits(true);
+            sourceBuilder.from(0);
+            sourceBuilder.size(0);
+            SearchRequest request = new SearchRequest(new String[]{config.getIndex()}, sourceBuilder);
             SearchResponse response = connectorMapper.getConnection().search(request, RequestOptions.DEFAULT);
             return response.getHits().getTotalHits();
         } catch (IOException e) {

+ 1 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/util/ESUtil.java

@@ -26,7 +26,7 @@ public abstract class ESUtil {
     }
 
     public static RestHighLevelClient getConnection(ESConfig config) {
-        String[] ipAddress = StringUtil.split(config.getClusterNodes(), ",");
+        String[] ipAddress = StringUtil.split(config.getUrl(), ",");
         HttpHost[] hosts = Arrays.stream(ipAddress).map(node -> makeHttpHost(node, config.getSchema())).filter(Objects::nonNull).toArray(
                 HttpHost[]::new);
         RestClientBuilder builder = RestClient.builder(hosts);

+ 24 - 33
dbsyncer-listener/src/main/test/ESClientTest.java

@@ -1,11 +1,6 @@
-import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.connector.config.ESConfig;
 import org.dbsyncer.connector.util.ESUtil;
-import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
-import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
 import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
-import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
-import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
 import org.elasticsearch.action.bulk.BulkItemResponse;
 import org.elasticsearch.action.bulk.BulkRequest;
 import org.elasticsearch.action.bulk.BulkResponse;
@@ -18,8 +13,11 @@ import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.support.master.AcknowledgedResponse;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.indices.CreateIndexRequest;
+import org.elasticsearch.client.indices.CreateIndexResponse;
+import org.elasticsearch.client.indices.GetIndexRequest;
+import org.elasticsearch.client.indices.GetIndexResponse;
 import org.elasticsearch.cluster.metadata.MappingMetaData;
-import org.elasticsearch.common.collect.ImmutableOpenMap;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.common.xcontent.XContentBuilder;
@@ -50,7 +48,7 @@ public class ESClientTest {
     @Before
     public void init() {
         ESConfig config = new ESConfig();
-        config.setClusterNodes("127.0.0.1:9200");
+        config.setUrl("127.0.0.1:9200");
         config.setSchema("http");
         config.setUsername("ae86");
         config.setPassword("123456");
@@ -70,9 +68,8 @@ public class ESClientTest {
 
     @Test
     public void isExistsIndexTest() {
-        GetIndexRequest request = new GetIndexRequest();
-        request.indices(indexName);
         try {
+            GetIndexRequest request = new GetIndexRequest(indexName);
             boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
             logger.info("es exist index:{}", exists);
         } catch (IOException e) {
@@ -127,7 +124,8 @@ public class ESClientTest {
             builder.endObject();
         }
         builder.endObject();
-        request.mapping(type, builder);
+        // 7版本开始去掉type
+        request.mapping(builder);
         // 这里创建索引结构
         CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
         // 指示是否所有节点都已确认请求
@@ -141,8 +139,7 @@ public class ESClientTest {
 
     @Test
     public void getIndexTest() throws IOException {
-        GetIndexRequest request = new GetIndexRequest();
-        request.indices(indexName);
+        GetIndexRequest request = new GetIndexRequest(indexName);
         GetIndexResponse indexResponse = client.indices().get(request, RequestOptions.DEFAULT);
         // 获取索引
         String[] indices = indexResponse.getIndices();
@@ -151,12 +148,10 @@ public class ESClientTest {
         }
 
         // 字段信息
-        ImmutableOpenMap<String, ImmutableOpenMap<String, MappingMetaData>> mappings = indexResponse.getMappings();
-        ImmutableOpenMap<String, MappingMetaData> typeMap = mappings.get(indexName);
-        MappingMetaData mappingMetaData = typeMap.get(type);
+        MappingMetaData mappingMetaData = indexResponse.getMappings().get(indexName);
         Map<String, Object> propertiesMap = mappingMetaData.getSourceAsMap();
-        Object o = propertiesMap.get(ESUtil.PROPERTIES);
-        logger.info(JsonUtil.objToJson(o));
+        Map<String, Map> properties = (Map<String, Map>) propertiesMap.get(ESUtil.PROPERTIES);
+        logger.info(properties.toString());
     }
 
     @Test
@@ -172,8 +167,8 @@ public class ESClientTest {
         map.put("id", 2);
         map.put("name", "刘备关羽张飞");
         map.put("content", "桃园结义");
-        map.put("tags", new Long[] {200L});
-        IndexRequest request = new IndexRequest(indexName, "_doc", "2");
+        map.put("tags", new Long[]{200L});
+        IndexRequest request = new IndexRequest(indexName, type, "2");
         request.source(map, XContentType.JSON);
 
         IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
@@ -188,8 +183,8 @@ public class ESClientTest {
         m1.put("id", 1);
         m1.put("name", "刘备关羽张飞");
         m1.put("content", "桃园结义");
-        m1.put("tags", new Long[] {200L});
-        IndexRequest r1 = new IndexRequest(indexName, "_doc", "1");
+        m1.put("tags", new Long[]{200L});
+        IndexRequest r1 = new IndexRequest(indexName, type, "1");
         r1.source(m1, XContentType.JSON);
         request.add(r1);
 
@@ -197,8 +192,8 @@ public class ESClientTest {
         m2.put("id", 2);
         m2.put("name", "曹阿瞒");
         m2.put("content", "火烧");
-        m2.put("tags", new Long[] {200L, 300L});
-        IndexRequest r2 = new IndexRequest(indexName, "_doc", "2");
+        m2.put("tags", new Long[]{200L, 300L});
+        IndexRequest r2 = new IndexRequest(indexName, type, "2");
         r2.source(m2, XContentType.JSON);
         request.add(r2);
 
@@ -212,7 +207,7 @@ public class ESClientTest {
 
     @Test
     public void deleteTest() throws IOException {
-        DeleteRequest request = new DeleteRequest(indexName, "_doc", "2");
+        DeleteRequest request = new DeleteRequest(indexName, type, "2");
         DeleteResponse delete = client.delete(request, RequestOptions.DEFAULT);
         logger.info(delete.toString());
     }
@@ -220,8 +215,8 @@ public class ESClientTest {
     @Test
     public void bulkDeleteTest() throws IOException {
         BulkRequest request = new BulkRequest();
-        request.add(new DeleteRequest(indexName, "_doc", "1"));
-        request.add(new DeleteRequest(indexName, "_doc", "2"));
+        request.add(new DeleteRequest(indexName, type, "1"));
+        request.add(new DeleteRequest(indexName, type, "2"));
 
         BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);
         BulkItemResponse[] items = response.getItems();
@@ -238,11 +233,9 @@ public class ESClientTest {
         sourceBuilder.from(0);
         sourceBuilder.size(10);
         sourceBuilder.timeout(TimeValue.timeValueMillis(10));
-        sourceBuilder.fetchSource(new String[] {"id", "name"}, null);
+        sourceBuilder.fetchSource(new String[]{"id", "name"}, null);
 
-        SearchRequest rq = new SearchRequest();
-        rq.indices(indexName);
-        rq.source(sourceBuilder);
+        SearchRequest rq = new SearchRequest(new String[]{indexName}, sourceBuilder);
         SearchResponse searchResponse = client.search(rq, RequestOptions.DEFAULT);
         SearchHits hits = searchResponse.getHits();
         long totalHits = hits.getTotalHits();
@@ -258,9 +251,7 @@ public class ESClientTest {
         SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
         // 取消限制返回查询条数10000
         sourceBuilder.trackTotalHits(true);
-        SearchRequest request = new SearchRequest();
-        request.indices(indexName);
-        request.source(sourceBuilder);
+        SearchRequest request = new SearchRequest(new String[]{indexName}, sourceBuilder);
         SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT);
         SearchHits hits = searchResponse.getHits();
         long totalHits = hits.getTotalHits();

+ 1 - 1
dbsyncer-web/pom.xml

@@ -18,7 +18,7 @@
             <version>${project.parent.version}</version>
         </dependency>
 
-        <!-- Web 容器,默认使用Tomcat, 当前使用Jetty容器,故排除-->
+        <!-- Web 容器,默认使用Tomcat-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 1 - 1
dbsyncer-web/src/main/resources/banner.txt

@@ -7,7 +7,7 @@ ${AnsiColor.BRIGHT_YELLOW}
    |  |    | |    |   ____  |    |_____   |     |  |__|  |    |   __   |    |   _____|    |   _____|    |  |  |  |
    |  |    | |    |  |    | |          |  |      \_    _/     |  |  |  |    |  |          |  |_____     |   _/  /
    |  |____/ |    |  |____| |     _____|  |        |  |       |  |  |  |    |  |_____     |  |_____     |   __/
-   |_______ /     |________ /    |________|        |__|       |__|  |__|    |________|    |________|    |__|
+   |________/     |________/     |________|        |__|       |__|  |__|    |________|    |________|    |__|
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ${AnsiColor.DEFAULT}
 Application Version: ${info.app.version}

+ 13 - 16
dbsyncer-web/src/main/resources/public/connector/addElasticSearch.html

@@ -13,22 +13,6 @@
             <input class="form-control" name="password" type="password" maxlength="32" dbsyncer-valid="require" th:value="${connector?.config?.password}"/>
         </div>
     </div>
-    <div class="form-group">
-        <label class="col-sm-2 control-label">协议 <strong class="driverVerifcateRequired">*</strong></label>
-        <div class="col-sm-4">
-            <select class="form-control select-control" name="schema">
-                <option value="http" th:selected="${connector?.config?.schema eq 'http'}">http</option>
-                <option value="tcp" th:selected="${connector?.config?.schema eq 'tcp'}">tcp</option>
-            </select>
-        </div>
-        <div class="col-sm-6 "></div>
-    </div>
-    <div class="form-group">
-        <label class="col-sm-2 control-label">地址(多个使用英文","拼接) <strong class="driverVerifcateRequired">*</strong></label>
-        <div class="col-sm-10">
-            <textarea id="sql" name="clusterNodes" class="form-control" maxlength="1024" dbsyncer-valid="require" rows="5" th:text="${connector?.config?.clusterNodes}?:'127.0.0.1:9200'"></textarea>
-        </div>
-    </div>
     <div class="form-group">
         <label class="col-sm-2 control-label">index <strong class="driverVerifcateRequired">*</strong></label>
         <div class="col-sm-4">
@@ -39,6 +23,19 @@
             <input class="form-control" name="type" type="text" maxlength="32" dbsyncer-valid="require" placeholder="_doc" th:value="${connector?.config?.type}?:'_doc'"/>
         </div>
     </div>
+    <div class="form-group">
+        <label class="col-sm-2 control-label">地址<i class="fa fa-question-circle fa_gray" aria-hidden="true" title="多个使用英文逗号,例如:192.168.1.100:9200,192.168.1.200:9200"></i> <strong class="driverVerifcateRequired">*</strong></label>
+        <div class="col-sm-4">
+            <textarea id="sql" name="url" class="form-control" maxlength="1024" dbsyncer-valid="require" rows="2" th:text="${connector?.config?.url}?:'127.0.0.1:9200'"></textarea>
+        </div>
+        <label class="col-sm-2 control-label">协议 </label>
+        <div class="col-sm-4">
+            <select class="form-control select-control" name="schema">
+                <option value="http" th:selected="${connector?.config?.schema eq 'http'}">http</option>
+                <option value="tcp" th:selected="${connector?.config?.schema eq 'tcp'}">tcp</option>
+            </select>
+        </div>
+    </div>
 </div>
 
 <script type="text/javascript">