diff --git a/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java b/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java index dc7c3d143..26e9c492b 100644 --- a/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java +++ b/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java @@ -132,7 +132,18 @@ public MappingMetaData getMapping(String index) { logger.error(e.getMessage(), e); return null; } + + // 通过别名查询mapping返回的是真实索引名称,mappings.get(index)返回null,为兼容别名情况修改如下: mappingMetaData = mappings.get(index); + if (mappingMetaData == null && !mappings.isEmpty()) { + // 如果通过索引名找不到,可能是别名,取第一个映射 + mappingMetaData = mappings.values().iterator().next(); + } + + // 如果还是null,说明索引不存在或没有mapping + if (mappingMetaData == null) { + throw new IllegalArgumentException("Not found the mapping info of index: " + index); + } } return mappingMetaData; } diff --git a/client-adapter/es8x/src/main/java/com/alibaba/otter/canal/client/adapter/es8x/support/ESConnection.java b/client-adapter/es8x/src/main/java/com/alibaba/otter/canal/client/adapter/es8x/support/ESConnection.java index ae1467012..367d6c476 100644 --- a/client-adapter/es8x/src/main/java/com/alibaba/otter/canal/client/adapter/es8x/support/ESConnection.java +++ b/client-adapter/es8x/src/main/java/com/alibaba/otter/canal/client/adapter/es8x/support/ESConnection.java @@ -142,7 +142,18 @@ public MappingMetadata getMapping(String index) { logger.error(e.getMessage(), e); return null; } + + // 通过别名查询mapping返回的是真实索引名称,mappings.get(index)返回null,为兼容别名情况修改如下: mappingMetaData = mappings.get(index); + if (mappingMetaData == null && !mappings.isEmpty()) { + // 如果通过索引名找不到,可能是别名,取第一个映射 + mappingMetaData = mappings.values().iterator().next(); + } + + // 如果还是null,说明索引不存在或没有mapping + if (mappingMetaData == null) { + throw new IllegalArgumentException("Not found the mapping info of index: " + index); + } return mappingMetaData; }