{"record":{"id":"ebdf44bf730c1fc4","repo":"elastic/elasticsearch","slug":"stemmer-override-filter-requires-either-rules-or","errorCode":null,"errorMessage":"stemmer override filter requires either `rules` or `rules_path` to be configured","messagePattern":"stemmer override filter requires either `rules` or `rules_path` to be configured","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/StemmerOverrideTokenFilterFactory.java","lineNumber":33,"sourceCode":"import org.elasticsearch.common.settings.Settings;\nimport org.elasticsearch.env.Environment;\nimport org.elasticsearch.index.IndexSettings;\nimport org.elasticsearch.index.analysis.AbstractTokenFilterFactory;\nimport org.elasticsearch.index.analysis.Analysis;\n\nimport java.io.IOException;\nimport java.util.List;\n\npublic class StemmerOverrideTokenFilterFactory extends AbstractTokenFilterFactory {\n\n    private final StemmerOverrideMap overrideMap;\n\n    StemmerOverrideTokenFilterFactory(IndexSettings indexSettings, Environment env, String name, Settings settings) throws IOException {\n        super(name);\n\n        List<String> rules = Analysis.getWordList(env, settings, \"rules\");\n        if (rules == null) {\n            throw new IllegalArgumentException(\"stemmer override filter requires either `rules` or `rules_path` to be configured\");\n        }\n\n        StemmerOverrideFilter.Builder builder = new StemmerOverrideFilter.Builder(false);\n        parseRules(rules, builder, \"=>\");\n        overrideMap = builder.build();\n\n    }\n\n    @Override\n    public TokenStream create(TokenStream tokenStream) {\n        return new StemmerOverrideFilter(tokenStream, overrideMap);\n    }\n\n    static void parseRules(List<String> rules, StemmerOverrideFilter.Builder builder, String mappingSep) {\n        for (String rule : rules) {\n            String[] sides = rule.split(mappingSep, -1);\n            if (sides.length != 2) {\n                throw new RuntimeException(\"Invalid Keyword override Rule:\" + rule);","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/StemmerOverrideTokenFilterFactory.java#L15-L51","documentation":"Error \"stemmer override filter requires either `rules` or `rules_path` to be configured\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/StemmerOverrideTokenFilterFactory.java:33 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-12T13:17:24.610Z"}