elastic/elasticsearch · error · RuntimeException

[tokenize_on_chars] cannot contain empty characters

Error message

[tokenize_on_chars] cannot contain empty characters

What it means

Error "[tokenize_on_chars] cannot contain empty characters" thrown in elastic/elasticsearch.

Source

Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CharGroupTokenizerFactory.java:42

    static final String MAX_TOKEN_LENGTH = "max_token_length";

    private final Set<Integer> tokenizeOnChars = new HashSet<>();
    private final Integer maxTokenLength;
    private boolean tokenizeOnSpace = false;
    private boolean tokenizeOnLetter = false;
    private boolean tokenizeOnDigit = false;
    private boolean tokenizeOnPunctuation = false;
    private boolean tokenizeOnSymbol = false;

    public CharGroupTokenizerFactory(IndexSettings indexSettings, Environment environment, String name, Settings settings) {
        super(name);

        maxTokenLength = settings.getAsInt(MAX_TOKEN_LENGTH, CharTokenizer.DEFAULT_MAX_WORD_LEN);

        for (final String c : settings.getAsList("tokenize_on_chars")) {
            if (c == null || c.length() == 0) {
                throw new RuntimeException("[tokenize_on_chars] cannot contain empty characters");
            }

            if (c.length() == 1) {
                tokenizeOnChars.add((int) c.charAt(0));
            } else if (c.charAt(0) == '\\') {
                tokenizeOnChars.add((int) parseEscapedChar(c));
            } else {
                switch (c) {
                    case "letter" -> tokenizeOnLetter = true;
                    case "digit" -> tokenizeOnDigit = true;
                    case "whitespace" -> tokenizeOnSpace = true;
                    case "punctuation" -> tokenizeOnPunctuation = true;
                    case "symbol" -> tokenizeOnSymbol = true;
                    default -> throw new RuntimeException("Invalid escaped char in [" + c + "]");
                }
            }
        }
    }

View on GitHub (pinned to db6a809a66)

When it happens

Trigger: Thrown at modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CharGroupTokenizerFactory.java:42 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of elastic/elasticsearch@db6a809a66 (2026-08-12). Data as JSON: /api/errors/ac50bc99dc49f1af. Report an issue: GitHub.