diff --git a/client-adapter/elasticsearch/pom.xml b/client-adapter/elasticsearch/pom.xml
index 90c64f80..d06eed6f 100644
--- a/client-adapter/elasticsearch/pom.xml
+++ b/client-adapter/elasticsearch/pom.xml
@@ -40,6 +40,12 @@
4.12
test
+
+ mysql
+ mysql-connector-java
+ 5.1.40
+ test
+
diff --git a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/ESAdapter.java b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/ESAdapter.java
index c2e899e7..112f0287 100644
--- a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/ESAdapter.java
+++ b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/ESAdapter.java
@@ -133,7 +133,7 @@ public class ESAdapter implements OuterAdapter {
esSyncService = new ESSyncService(esTemplate);
esConfigMonitor = new ESConfigMonitor();
- esConfigMonitor.init(this);
+ esConfigMonitor.init(this, envProperties);
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/ESSyncConfig.java b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/ESSyncConfig.java
index 94341fd0..a84223fe 100644
--- a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/ESSyncConfig.java
+++ b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/ESSyncConfig.java
@@ -5,6 +5,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.apache.commons.lang.StringUtils;
+
/**
* ES 映射配置
*
@@ -24,6 +26,12 @@ public class ESSyncConfig {
private ESMapping esMapping;
public void validate() {
+ if (!esMapping.relations.isEmpty()) {
+ Map relationMappings = esMapping.relations.get(0);
+ RelationMapping relationMapping = relationMappings.values().iterator().next();
+ esMapping.isChild = StringUtils.isNotEmpty(relationMapping.getParent());
+ }
+
if (esMapping._index == null) {
throw new NullPointerException("esMapping._index");
}
@@ -31,7 +39,7 @@ public class ESSyncConfig {
throw new NullPointerException("esMapping._type");
}
if (esMapping._id == null && esMapping.getPk() == null) {
- throw new NullPointerException("esMapping._id and esMapping.pk");
+ throw new NullPointerException("esMapping._id or esMapping.pk");
}
if (esMapping.sql == null) {
throw new NullPointerException("esMapping.sql");
@@ -80,23 +88,24 @@ public class ESSyncConfig {
public static class ESMapping {
- private String _index;
- private String _type;
- private String _id;
- private boolean upsert = false;
- private String pk;
- // private String parent;
- private String sql;
+ private String _index;
+ private String _type;
+ private String _id;
+ private boolean upsert = false;
+ private String pk;
+ private List