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

  1. Identify the unsupported type from the message and remove/retype that field, or restrict the index/query to supported fields
  2. Change the field mapping in Elasticsearch to a supported type (string, keyword, text, binary, boolean, byte, short, integer, long, float, half_float, double, date)
  3. Convert unsupported fields to supported ones (e.g., geo_point -> two float fields; date_nanos -> date) or filter them out of _source
  4. 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

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


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