quickwit-oss/quickwit · error
index ID pattern `{pattern}` is invalid: patterns must not c
Error message
index ID pattern `{pattern}` is invalid: patterns must not contain multiple consecutive `*` What it means
quickwit-config validates index ID patterns used for wildcard index selection. A pattern may contain at most one `*` wildcard; consecutive stars (`**`) are rejected because multiple stars bring no matching value and only produce confusing, overly broad patterns. The check runs in `validate_index_id_pattern`, invoked during config validation and when building regex sets for pattern-based searches.
Source
Thrown at quickwit/quickwit-config/src/lib.rs:183
.expect("regular expression should compile")
});
let regex = if allow_negative {
&IDENTIFIER_REGEX_WITH_GLOB_PATTERN_NEGATIVE
} else {
&IDENTIFIER_REGEX_WITH_GLOB_PATTERN
};
if !regex.is_match(pattern) {
bail!(
"index ID pattern `{pattern}` is invalid: patterns must match the following regular \
expression: `^[a-zA-Z\\*][a-zA-Z0-9-_\\.\\*]{{0,254}}$`"
);
}
// Forbid multiple stars in the pattern to force the user making simpler patterns
// as multiple stars does not bring any value.
if pattern.contains("**") {
bail!(
"index ID pattern `{pattern}` is invalid: patterns must not contain multiple \
consecutive `*`"
);
}
// If there is no star in the pattern, we need at least 3 characters.
if !pattern.contains('*') && pattern.len() < 3 {
bail!(
"index ID pattern `{pattern}` is invalid: an index ID must have at least 3 characters"
);
}
Ok(())
}
pub fn validate_node_id(node_id: &NodeIdRef) -> anyhow::Result<()> {
if !is_valid_hostname(node_id.as_str()) {
bail!(
"node identifier `{node_id}` is invalid. node identifiers must be valid short \
hostnames (see RFC 1123)"View on GitHub (pinned to a39730c5cd)
Solutions
- Replace `**` with a single `*` in the pattern; a single trailing star already matches any suffix.
- If you meant to match nested separators, remember Quickwit index IDs cannot contain `/`, so one `*` suffices.
- Validate patterns before submitting by checking `!pattern.contains("**")`.
Example fix
// before index_id_patterns: ["logs-**"] // after index_id_patterns: ["logs-*"]
Defensive patterns
Strategy: validation
Validate before calling
fn is_valid_index_id_pattern(pattern: &str) -> bool {
pattern.contains('*') && !pattern.contains("**")
} Prevention
- Never write `**` in index ID patterns; one `*` matches everything a multi-star glob would.
- Centralize pattern construction in one helper that collapses consecutive stars.
- Run config validation before deploying patterns.
When it happens
Trigger: Calling `validate_index_id_pattern("logs**")` or any config validation path (`validate`, `build_regex_set`, `extract_otel_traces_index_id_patterns_from_metadata`, `es_compat_index_multi_search`) with a pattern string containing `**` anywhere.
Common situations: Users writing `my-index**` in index config or search requests assuming glob-style multi-star semantics; copy-pasted patterns from Elasticsearch (which allows `*` repetition); scripted pattern generation that appends `*` to a pattern already ending in `*`.
Related errors
- index ID pattern `{pattern}` is invalid: an index ID must ha
- index config merge policy `max_merge_factor` must be superio
- file extension `.{ext}` is not supported. supported file for
- the `compactor` service can only be enabled when `enable_sta
- stdin can only be used as source through the CLI command `qu
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/fe1cdf7e5e147d15.
Report an issue: GitHub.