{"record":{"id":"94509a9390df0de0","repo":"elastic/elasticsearch","slug":"the-difference-between-max-gram-and-min-gram-in-ng","errorCode":null,"errorMessage":"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: [{}] but was [{}]. This limit can be set by changing the [{}] index level setting.","messagePattern":"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: \\[(.+?)\\] but was \\[(.+?)\\]\\. This limit can be set by changing the \\[(.+?)\\] index level setting\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java","lineNumber":33,"sourceCode":"import org.elasticsearch.env.Environment;\nimport org.elasticsearch.index.IndexSettings;\nimport org.elasticsearch.index.analysis.AbstractTokenFilterFactory;\nimport org.elasticsearch.index.analysis.TokenFilterFactory;\n\npublic class NGramTokenFilterFactory extends AbstractTokenFilterFactory {\n    private final int minGram;\n    private final int maxGram;\n    private final boolean preserveOriginal;\n    private static final String PRESERVE_ORIG_KEY = \"preserve_original\";\n\n    NGramTokenFilterFactory(IndexSettings indexSettings, Environment environment, String name, Settings settings) {\n        super(name);\n        int maxAllowedNgramDiff = indexSettings.getMaxNgramDiff();\n        this.minGram = settings.getAsInt(\"min_gram\", 1);\n        this.maxGram = settings.getAsInt(\"max_gram\", 2);\n        int ngramDiff = maxGram - minGram;\n        if (ngramDiff > maxAllowedNgramDiff) {\n            throw new IllegalArgumentException(\n                \"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: [\"\n                    + maxAllowedNgramDiff\n                    + \"] but was [\"\n                    + ngramDiff\n                    + \"]. This limit can be set by changing the [\"\n                    + IndexSettings.MAX_NGRAM_DIFF_SETTING.getKey()\n                    + \"] index level setting.\"\n            );\n        }\n        preserveOriginal = settings.getAsBoolean(PRESERVE_ORIG_KEY, false);\n    }\n\n    @Override\n    public TokenStream create(TokenStream tokenStream) {\n        return new NGramTokenFilter(tokenStream, minGram, maxGram, preserveOriginal);\n    }\n\n    @Override","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.java#L15-L51","documentation":"Error \"The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: [{}] but was [{}]. This limit can be set by changing the [{}] index level setting.\" thrown in elastic/elasticsearch.","triggerScenarios":"Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/NGramTokenFilterFactory.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-13T09:17:06.757Z"}