apache/seatunnel · error · ElasticsearchConnectorException
ES_FIELD_TYPE_NOT_SUPPORT
ES_FIELD_TYPE_NOT_SUPPORT
Error message
elasticsearch type is %s
What it means
EsTypeMappingSeaTunnelType.getSeaTunnelDataType throws ES_FIELD_TYPE_NOT_SUPPORT when an Elasticsearch field type string has no entry in the connector's type mapping table. The connector cannot convert that ES field into a SeaTunnel data type, so it fails with the offending type name in the message.
Source
Thrown at seatunnel-connectors-v2/connector-elasticsearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/elasticsearch/constant/EsTypeMappingSeaTunnelType.java:59
put("integer", BasicType.INT_TYPE);
put("long", BasicType.LONG_TYPE);
put("float", BasicType.FLOAT_TYPE);
put("half_float", BasicType.FLOAT_TYPE);
put("double", BasicType.DOUBLE_TYPE);
put("date", LocalTimeType.LOCAL_DATE_TIME_TYPE);
}
};
/**
* if not find the mapping SeaTunnelDataType will throw runtime exception
*
* @param esType
* @return
*/
public static SeaTunnelDataType getSeaTunnelDataType(String esType) {
SeaTunnelDataType seaTunnelDataType = MAPPING.get(esType);
if (seaTunnelDataType == null) {
throw new ElasticsearchConnectorException(
ElasticsearchConnectorErrorCode.ES_FIELD_TYPE_NOT_SUPPORT,
String.format("elasticsearch type is %s", esType));
}
return seaTunnelDataType;
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Identify the unsupported type from the message and remove/retype that field, or restrict the index/query to supported fields
- Change the field mapping in Elasticsearch to a supported type (string, keyword, text, binary, boolean, byte, short, integer, long, float, half_float, double, date)
- Convert unsupported fields to supported ones (e.g., geo_point -> two float fields; date_nanos -> date) or filter them out of _source
- Upgrade SeaTunnel — newer releases add more supported ES types
Example fix
// ES mapping before
"location": {"type": "geo_point"}
// after
"location_lat": {"type": "float"}, "location_lon": {"type": "float"} Defensive patterns
Strategy: validation
Validate before calling
// Pre-check the index mapping for unsupported field types:
Set<String> supported = Set.of("string","keyword","text","binary","boolean","byte","short","integer","long","float","half_float","double","date");
for (Map.Entry<String,String> f : indexMappingFields.entrySet()) {
if (!supported.contains(f.getValue())) throw new IllegalStateException("Field " + f.getKey() + " has unsupported ES type: " + f.getValue());
} Type guard
boolean isSupportedEsType(String esType) {
return esType != null && Set.of("string","keyword","text","binary","boolean","byte","short","integer","long","float","half_float","double","date").contains(esType);
} Try / catch
try {
SeaTunnelDataType dt = EsTypeMappingSeaTunnelType.getSeaTunnelDataType(esType);
} catch (ElasticsearchConnectorException e) {
// fallback mapping for known-unsupported types
dt = fallbackMapping(esType); // e.g. geo_point/ip/nested -> STRING or skip field
} Prevention
- Restrict source indexes to fields with supported types
- Retype unsupported fields (geo_point, ip, nested, date_nanos) in the ES mapping or exclude them
- Keep ES mapping changes coordinated with pipeline schema expectations
- Upgrade SeaTunnel to get newly supported ES types
When it happens
Trigger: Schema/mapping extraction returns an ES field type not in MAPPING — e.g., 'nested', 'object', 'geo_point', 'date_nanos', 'ip', 'keyword' variants with parameters, or multi-field subtypes — when building the source catalog table.
Common situations: Indexes containing geo/nested/ip/join fields; date_nanos on newer ES; custom or plugin field types; reading an index whose mapping includes types the connector does not support.
Related errors
- UNSUPPORTED_DATA_TYPE
- Unsupported Vitess catalog SQL type:
- seaTunnelDataType cannot be null
- UNSUPPORTED_DATA_TYPE
- EZS_FIELD_TYPE_NOT_SUPPORT
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/526cf3a762dbb4c3.
Report an issue: GitHub.