quickwit-oss/quickwit · error

failed to ingest all the documents

Error message

failed to ingest all the documents

What it means

After a local ingest run, the statistics reported by `local_ingest_docs_cli` show one or more documents were rejected as invalid (num_invalid_docs > 0) — they failed doc-mapper validation during parsing/indexing, so not all input documents made it into the index. The command then aborts with this error instead of reporting success.

Solutions

  1. Inspect the per-document error output printed during ingest to find which documents fail validation
  2. Fix the offending documents to conform to the index doc mapping (types, required fields, format)
  3. Tighten or correct the doc mapping if valid documents are being rejected
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at quickwit/quickwit-cli/src/tool.rs:538 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at quickwit/quickwit-cli/src/tool.rs:538

        println!(
            "Now, you can query the index with the following command:\nquickwit index search \
             --index {} --config ./config/quickwit.yaml --query \"my query\"",
            args.index_id
        );
    }

    if args.clear_cache {
        println!("Clearing local cache directory...");
        clear_cache_directory(&config.data_dir_path).await?;
        println!("{} Local cache directory cleared.", "✔".color(GREEN_COLOR));
    }

    match statistics.num_invalid_docs {
        0 => {
            println!("{} Documents successfully indexed.", "✔".color(GREEN_COLOR));
            Ok(())
        }
        _ => bail!("failed to ingest all the documents"),
    }
}

pub async fn local_search_cli(args: LocalSearchArgs) -> anyhow::Result<()> {
    debug!(args=?args, "local-search");
    println!("❯ Searching directly on the index storage (without calling REST API)...");
    let config = load_node_config(&args.config_uri, None).await?;
    let (storage_resolver, metastore_resolver) =
        get_resolvers(&config.storage_configs, &config.metastore_configs);
    let metastore: MetastoreServiceClient =
        metastore_resolver.resolve(&config.metastore_uri).await?;
    let aggs = args
        .aggregation
        .map(|agg_string| serde_json::from_str(&agg_string))
        .transpose()?;
    let sort_by: SortBy = args.sort_by_field.map(SortBy::from).unwrap_or_default();
    let search_request_query_string = SearchRequestQueryString {
        query: args.query,

View on GitHub (pinned to a39730c5cd)