quickwit-oss/quickwit · error

`index_id` in config file {} does not match updated `index_i

Error message

`index_id` in config file {} does not match updated `index_id` {}

What it means

This error is thrown by `load_index_config_update` in quickwit-config when applying a config-file update to an existing index. Quickwit parses the new index config from user-provided bytes and then checks that the `index_id` in the new file is identical to the `index_id` of the currently stored index config. Since the index identity cannot change through an update (the index is addressed by its `index_id`), any mismatch is rejected with this message showing both values.

Source

Thrown at quickwit/quickwit-config/src/index_config/serialize.rs:80

}

/// Parses and validates an [`IndexConfig`] update.
///
/// Ensures that the new configuration is valid in itself and compared to the
/// current index config. If the new configuration omits some fields, the
/// default values will be used, not those of the current index config.
pub fn load_index_config_update(
    config_format: ConfigFormat,
    index_config_bytes: &[u8],
    default_index_root_uri: &Uri,
    current_index_config: &IndexConfig,
) -> anyhow::Result<IndexConfig> {
    let mut new_index_config = load_index_config_from_user_config(
        config_format,
        index_config_bytes,
        default_index_root_uri,
    )?;
    ensure!(
        current_index_config.index_id == new_index_config.index_id,
        "`index_id` in config file {} does not match updated `index_id` {}",
        current_index_config.index_id,
        new_index_config.index_id
    );
    ensure!(
        current_index_config.index_uri == new_index_config.index_uri,
        "`index_uri` cannot be updated, current value {}, new expected value {}",
        current_index_config.index_uri,
        new_index_config.index_uri
    );
    let (updated_doc_mapping, _mutation_occurred) = prepare_doc_mapping_update(
        new_index_config.doc_mapping,
        &current_index_config.doc_mapping,
        &new_index_config.search_settings,
    )?;
    new_index_config.doc_mapping = updated_doc_mapping;

View on GitHub (pinned to a39730c5cd)

Solutions

  1. Set the `index_id` field in the config file to exactly match the current index's `index_id`
  2. If you actually intend to rename, delete the old index and create a new one instead of updating
  3. Re-generate the config from the current index metadata (`GET /_index/{index_id}` style) to guarantee the id matches

Example fix

// before
index_id: my-renamed-index
// after
index_id: my-index
Defensive patterns

Strategy: validation

Validate before calling

fn ensure_index_id_unchanged(current: &str, new_config: &str) -> anyhow::Result<()> {
    let new_id = extract_index_id(new_config)?; // parse your YAML/JSON to the index_id field
    if new_id != current {
        anyhow::bail!(
            "config index_id `{new_id}` does not match index being updated `{current}`"
        );
    }
    Ok(())
}

Try / catch

match load_index_config_update(...) {
    Err(e) if e.to_string().contains("does not match updated `index_id`") => {
        eprintln!("Fix index_id in your config file to match the target index.");
    }
    other => other?,
}

Prevention

When it happens

Trigger: Calling `update_index` (REST/gRPC metadata update path) or `load_index_config_update` directly with index config YAML/JSON/TOML whose `index_id` field differs from the current index's `index_id`.

Common situations: Copy-pasting an index config from another index and forgetting to update `index_id`; renaming an index by editing `index_id` in the config instead of creating a new index; templated configs where the id is substituted incorrectly.

Related errors


AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08). Data as JSON: /api/errors/b1b1dfe3cfc73fc3. Report an issue: GitHub.