{"record":{"id":"e72395f0b4ae51d4","repo":"elastic/elasticsearch","slug":"invalid-mapping-rule-illegal-mapping","errorCode":null,"errorMessage":"Invalid Mapping Rule : [{}]. Illegal mapping.","messagePattern":"Invalid Mapping Rule : \\[(.+?)\\]\\. Illegal mapping\\.","errorType":"validation","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MappingCharFilterFactory.java","lineNumber":62,"sourceCode":"    public Reader create(Reader tokenStream) {\n        return new MappingCharFilter(normMap, tokenStream);\n    }\n\n    // source => target\n    private static Pattern rulePattern = Pattern.compile(\"(.*)\\\\s*=>\\\\s*(.*)\\\\s*$\");\n\n    /**\n     * parses a list of MappingCharFilter style rules into a normalize char map\n     */\n    private void parseRules(List<String> rules, NormalizeCharMap.Builder map) {\n        for (String rule : rules) {\n            Matcher m = rulePattern.matcher(rule);\n            if (m.find() == false) {\n                throw new RuntimeException(\"Invalid Mapping Rule : [\" + rule + \"]\");\n            }\n            String lhs = parseString(m.group(1).trim());\n            String rhs = parseString(m.group(2).trim());\n            if (lhs == null || rhs == null) throw new RuntimeException(\"Invalid Mapping Rule : [\" + rule + \"]. Illegal mapping.\");\n            map.add(lhs, rhs);\n        }\n    }\n\n    char[] out = new char[256];\n\n    private String parseString(String s) {\n        int readPos = 0;\n        int len = s.length();\n        int writePos = 0;\n        while (readPos < len) {\n            char c = s.charAt(readPos++);\n            if (c == '\\\\') {\n                if (readPos >= len) throw new RuntimeException(\"Invalid escaped char in [\" + s + \"]\");\n                c = s.charAt(readPos++);\n                switch (c) {\n                    case '\\\\' -> c = '\\\\';\n                    case 'n' -> c = '\\n';","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MappingCharFilterFactory.java#L44-L80","documentation":"Error \"Invalid Mapping Rule : [{}]. Illegal mapping.\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MappingCharFilterFactory.java:62 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}