{"record":{"id":"1a3d8434048e3937","repo":"elastic/elasticsearch","slug":"keep-requires-either-keep-words-or-keep-words-p","errorCode":null,"errorMessage":"keep requires either `keep_words` or `keep_words_path` to be configured","messagePattern":"keep requires either `keep_words` or `keep_words_path` to be configured","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/KeepWordFilterFactory.java","lineNumber":60,"sourceCode":" */\npublic class KeepWordFilterFactory extends AbstractTokenFilterFactory {\n    private final CharArraySet keepWords;\n    private static final String KEEP_WORDS_KEY = \"keep_words\";\n    private static final String KEEP_WORDS_PATH_KEY = KEEP_WORDS_KEY + \"_path\";\n    @SuppressWarnings(\"unused\")\n    private static final String KEEP_WORDS_CASE_KEY = KEEP_WORDS_KEY + \"_case\"; // for javadoc\n\n    // unsupported ancient option\n    private static final String ENABLE_POS_INC_KEY = \"enable_position_increments\";\n\n    KeepWordFilterFactory(IndexSettings indexSettings, Environment env, String name, Settings settings) {\n        super(name);\n\n        final List<String> arrayKeepWords = settings.getAsList(KEEP_WORDS_KEY, null);\n        final String keepWordsPath = settings.get(KEEP_WORDS_PATH_KEY, null);\n        if ((arrayKeepWords == null && keepWordsPath == null) || (arrayKeepWords != null && keepWordsPath != null)) {\n            // we don't allow both or none\n            throw new IllegalArgumentException(\n                \"keep requires either `\" + KEEP_WORDS_KEY + \"` or `\" + KEEP_WORDS_PATH_KEY + \"` to be configured\"\n            );\n        }\n        if (settings.get(ENABLE_POS_INC_KEY) != null) {\n            throw new IllegalArgumentException(ENABLE_POS_INC_KEY + \" is not supported anymore. Please fix your analysis chain\");\n        }\n        this.keepWords = Analysis.getWordSet(env, settings, KEEP_WORDS_KEY);\n    }\n\n    @Override\n    public TokenStream create(TokenStream tokenStream) {\n        return new KeepWordFilter(tokenStream, keepWords);\n    }\n}\n","sourceCodeStart":42,"sourceCodeEnd":75,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/KeepWordFilterFactory.java#L42-L75","documentation":"Error \"keep requires either `keep_words` or `keep_words_path` to be configured\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/KeepWordFilterFactory.java:60 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"}