apache/seatunnel · error · EasysearchConnectorException

EZS_FIELD_TYPE_NOT_SUPPORT

EZS_FIELD_TYPE_NOT_SUPPORT

Error message

easysearch type is %s

What it means

EzsTypeMappingSeaTunnelType.getSeaTunnelDataType maps an Easysearch field type string to a SeaTunnelDataType via a static MAPPING table; unknown types throw EZS_FIELD_TYPE_NOT_SUPPORT naming the offending esType. The connector cannot represent the field in the SeaTunnel type system.

Source

Thrown at seatunnel-connectors-v2/connector-easysearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/easysearch/constant/EzsTypeMappingSeaTunnelType.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 EasysearchConnectorException(
                    EasysearchConnectorErrorCode.EZS_FIELD_TYPE_NOT_SUPPORT,
                    String.format("easysearch type is %s", esType));
        }
        return seaTunnelDataType;
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Change the field's mapping to a supported scalar type (keyword, text, long, integer, double, boolean, date, etc.).
  2. Exclude or filter out unsupported fields in the query/source configuration.
  3. Extend the connector's type mapping table if you maintain a fork.
  4. Align connector/cluster versions so the type table covers the cluster's types.

Example fix

// index mapping field
"location": { "type": "geo_point" } // unsupported
// after: remap in index template
"location": { "type": "keyword" } // or use supported type
Defensive patterns

Strategy: validation

Validate before calling

String esType = mapping.get(fieldName);
if (!SUPPORTED_TYPES.contains(esType)) throw new IllegalArgumentException("unsupported field type " + esType + " for " + fieldName);

Type guard

Object ensureSupportedType(Object v) { return v instanceof String || v instanceof Number || v instanceof Boolean || v instanceof Map || v instanceof List ? v : String.valueOf(v); }

Try / catch

try { dt = EzsTypeMappingSeaTunnelType.getSeaTunnelDataType(esType); } catch (EasysearchConnectorException e) { /* skip field or use fallback STRING type */ }

Prevention

When it happens

Trigger: Reading an index whose mapping contains a field type not present in the mapping table (e.g. geo_shape, percolator, binary, ip, or newer Easysearch types), resolved during schema discovery.

Common situations: Indexes containing advanced/geo/nested field types; cluster version newer than connector's supported type table; dynamic mapping creating exotic types.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/5e8574e68e882004. Report an issue: GitHub.