{"record":{"id":"4b4dd77e0c7ce4f0","repo":"elastic/elasticsearch","slug":"token-filter-cannot-be-used-to-parse-synonyms-4b4dd7","errorCode":null,"errorMessage":"Token filter [{}] cannot be used to parse synonyms","messagePattern":"Token filter \\[(.+?)\\] cannot be used to parse synonyms","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MultiplexerTokenFilterFactory.java","lineNumber":51,"sourceCode":"public class MultiplexerTokenFilterFactory extends AbstractTokenFilterFactory {\n\n    private List<String> filterNames;\n    private final boolean preserveOriginal;\n\n    public MultiplexerTokenFilterFactory(IndexSettings indexSettings, Environment env, String name, Settings settings) throws IOException {\n        super(name);\n        this.filterNames = settings.getAsList(\"filters\");\n        this.preserveOriginal = settings.getAsBoolean(\"preserve_original\", true);\n    }\n\n    @Override\n    public TokenStream create(TokenStream tokenStream) {\n        throw new UnsupportedOperationException(\"TokenFilterFactory.getChainAwareTokenFilterFactory() must be called first\");\n    }\n\n    @Override\n    public TokenFilterFactory getSynonymFilter() {\n        throw new IllegalArgumentException(\"Token filter [\" + name() + \"] cannot be used to parse synonyms\");\n    }\n\n    @Override\n    public TokenFilterFactory getChainAwareTokenFilterFactory(\n        IndexCreationContext context,\n        TokenizerFactory tokenizer,\n        List<CharFilterFactory> charFilters,\n        List<TokenFilterFactory> previousTokenFilters,\n        Function<String, TokenFilterFactory> allFilters\n    ) {\n        // Guard against a filter referring to itself (directly or via a cycle), which would otherwise\n        // recurse until the stack overflows and takes the node down.\n        allFilters = ReferringFilterResolver.enter(name(), allFilters);\n        List<TokenFilterFactory> filters = new ArrayList<>();\n        if (preserveOriginal) {\n            filters.add(IDENTITY_FILTER);\n        }\n        // also merge and transfer token filter analysis modes with analyzer","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MultiplexerTokenFilterFactory.java#L33-L69","documentation":"Error \"Token filter [{}] cannot be used to parse synonyms\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/MultiplexerTokenFilterFactory.java:51 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-12T12:31:55.035Z"}