{"record":{"id":"526cf3a762dbb4c3","repo":"apache/seatunnel","slug":"es-field-type-not-support","errorCode":"ES_FIELD_TYPE_NOT_SUPPORT","errorMessage":"elasticsearch type is %s","messagePattern":"elasticsearch type is (.+?)","errorType":"error_code","errorClass":"ElasticsearchConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-elasticsearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/elasticsearch/constant/EsTypeMappingSeaTunnelType.java","lineNumber":59,"sourceCode":"                    put(\"integer\", BasicType.INT_TYPE);\n                    put(\"long\", BasicType.LONG_TYPE);\n                    put(\"float\", BasicType.FLOAT_TYPE);\n                    put(\"half_float\", BasicType.FLOAT_TYPE);\n                    put(\"double\", BasicType.DOUBLE_TYPE);\n                    put(\"date\", LocalTimeType.LOCAL_DATE_TIME_TYPE);\n                }\n            };\n\n    /**\n     * if not find the mapping SeaTunnelDataType will throw runtime exception\n     *\n     * @param esType\n     * @return\n     */\n    public static SeaTunnelDataType getSeaTunnelDataType(String esType) {\n        SeaTunnelDataType seaTunnelDataType = MAPPING.get(esType);\n        if (seaTunnelDataType == null) {\n            throw new ElasticsearchConnectorException(\n                    ElasticsearchConnectorErrorCode.ES_FIELD_TYPE_NOT_SUPPORT,\n                    String.format(\"elasticsearch type is %s\", esType));\n        }\n        return seaTunnelDataType;\n    }\n}\n","sourceCodeStart":41,"sourceCodeEnd":66,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-elasticsearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/elasticsearch/constant/EsTypeMappingSeaTunnelType.java#L41-L66","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// ES mapping before\n\"location\": {\"type\": \"geo_point\"}\n// after\n\"location_lat\": {\"type\": \"float\"}, \"location_lon\": {\"type\": \"float\"}","handlingStrategy":"validation","validationCode":"// Pre-check the index mapping for unsupported field types:\nSet<String> supported = Set.of(\"string\",\"keyword\",\"text\",\"binary\",\"boolean\",\"byte\",\"short\",\"integer\",\"long\",\"float\",\"half_float\",\"double\",\"date\");\nfor (Map.Entry<String,String> f : indexMappingFields.entrySet()) {\n    if (!supported.contains(f.getValue())) throw new IllegalStateException(\"Field \" + f.getKey() + \" has unsupported ES type: \" + f.getValue());\n}","typeGuard":"boolean isSupportedEsType(String esType) {\n    return esType != null && Set.of(\"string\",\"keyword\",\"text\",\"binary\",\"boolean\",\"byte\",\"short\",\"integer\",\"long\",\"float\",\"half_float\",\"double\",\"date\").contains(esType);\n}","tryCatchPattern":"try {\n    SeaTunnelDataType dt = EsTypeMappingSeaTunnelType.getSeaTunnelDataType(esType);\n} catch (ElasticsearchConnectorException e) {\n    // fallback mapping for known-unsupported types\n    dt = fallbackMapping(esType); // e.g. geo_point/ip/nested -> STRING or skip field\n}","preventionTips":["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"],"tags":["elasticsearch","type-mapping","schema","compatibility"],"backgroundTag":"unsupported-field-type","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}