apache/seatunnel · error · EasysearchConnectorException
UNSUPPORTED_OPERATION
UNSUPPORTED_OPERATION
Error message
error fieldName=%s,fieldValue=%s,seaTunnelDataType=%s,rowRecord=%s
What it means
DefaultSeaTunnelRowDeserializer.convert wraps per-field value conversion in a catch-all that rethrows any failure as an UNSUPPORTED_OPERATION EasysearchConnectorException, including the field name, raw value, target data type, and the full source record JSON. It is a diagnostic wrapper meaning 'this document field could not be converted to the declared SeaTunnel type'.
Source
Thrown at seatunnel-connectors-v2/connector-easysearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/easysearch/serialize/source/DefaultSeaTunnelRowDeserializer.java:129
SeaTunnelDataType seaTunnelDataType = null;
try {
for (int i = 0; i < rowTypeInfo.getTotalFields(); i++) {
fieldName = rowTypeInfo.getFieldName(i);
value = recursiveGet(rowRecord.getDoc(), fieldName);
if (value != null) {
seaTunnelDataType = rowTypeInfo.getFieldType(i);
if (value instanceof NullNode) {
seaTunnelFields[i] = null;
} else if (value instanceof TextNode) {
seaTunnelFields[i] =
convertValue(seaTunnelDataType, ((TextNode) value).textValue());
} else {
seaTunnelFields[i] = convertValue(seaTunnelDataType, value.toString());
}
}
}
} catch (Exception ex) {
throw new EasysearchConnectorException(
UNSUPPORTED_OPERATION,
String.format(
"error fieldName=%s,fieldValue=%s,seaTunnelDataType=%s,rowRecord=%s",
fieldName, value, seaTunnelDataType, JsonUtils.toJsonString(rowRecord)),
ex);
}
return new SeaTunnelRow(seaTunnelFields);
}
Object convertValue(SeaTunnelDataType<?> fieldType, String fieldValue)
throws JsonProcessingException {
if (BOOLEAN_TYPE.equals(fieldType)) {
return Boolean.parseBoolean(fieldValue);
} else if (BYTE_TYPE.equals(fieldType)) {
return Byte.valueOf(fieldValue);
} else if (SHORT_TYPE.equals(fieldType)) {
return Short.parseShort(fieldValue);
} else if (INT_TYPE.equals(fieldType)) {View on GitHub (pinned to cf67b549a7)
Solutions
- Inspect the logged fieldName/fieldValue and fix the data in the index (clean dirty values) or adjust the declared schema.
- Change the SeaTunnel data type for the offending field to STRING and parse downstream.
- Add a Transform to filter/repair malformed documents before they reach the deserializer.
- If conversion should legitimately support the value, extend convertValue's parsing logic.
Example fix
// before
{"age": {"type": "INT"}} // index has age="unknown"
// after
{"age": {"type": "STRING"}} // read as string, cast later Defensive patterns
Strategy: try-catch
Try / catch
try { rows = deserializer.deserialize(hit); } catch (EasysearchConnectorException e) { if (e.getSeaTunnelErrorCode() == UNSUPPORTED_OPERATION && e.getMessage().startsWith("error fieldName=")) { log.warn("Skipping bad document: {}", e.getMessage()); return null; /* or dead-letter */ } throw e; } Prevention
- Keep the declared schema in sync with the actual index mapping (GET index/_mapping)
- Clean or quarantine dirty documents in the index
- Prefer STRING types for heterogeneous fields and parse downstream
When it happens
Trigger: Calling deserialize on an Easysearch hit where convertValue (or any parsing step) throws for a field — e.g. a string that cannot parse to the declared SeaTunnelDataType, or a nested map access failing.
Common situations: ES documents whose field values don't match the configured schema (string "abc" in an INT column, malformed dates), dirty/optional fields present in one document but typed differently in others, schema manually declared in the source config that diverges from actual index mapping.
Understand the failure class
Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.
Related errors
- UNSUPPORTED_DATA_TYPE
- columnDefine size not match
- typeDefine size not match
- reconvert not support
- Unsupported byte value '${value}' for row kind.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a11e8da75ca14e71.
Report an issue: GitHub.