quickwit-oss/quickwit · error · anyhow::Error
default search field `{default_search_field_name}` is not in
Error message
default search field `{default_search_field_name}` is not indexed What it means
Every default search field must be indexed; searching a non-indexed field can never match. After resolving the field via `find_field_with_default`, try_from checks `is_indexed()` on the field entry and bails if it is false (e.g. a `fast`-only or stored-only field).
Source
Thrown at quickwit/quickwit-doc-mapper/src/doc_mapper/doc_mapper_impl.rs:259
}
validate_fields_tokenizers(&schema, &tokenizer_manager)?;
// Resolve default search fields
let mut default_search_field_names = Vec::new();
for default_search_field_name in &builder.default_search_fields {
if default_search_field_names.contains(default_search_field_name) {
bail!(
"duplicated default search field: `{}`",
default_search_field_name
)
}
let (default_search_field, _json_path) = schema
.find_field_with_default(default_search_field_name, dynamic_field)
.with_context(|| {
format!("unknown default search field `{default_search_field_name}`")
})?;
if !schema.get_field_entry(default_search_field).is_indexed() {
bail!("default search field `{default_search_field_name}` is not indexed",);
}
default_search_field_names.push(default_search_field_name.clone());
}
// Resolve tag fields
for tag_field_name in &doc_mapping.tag_fields {
validate_tag(tag_field_name, &schema)?;
}
let partition_key_expr: &str = doc_mapping.partition_key.as_deref().unwrap_or("");
let partition_key = RoutingExpr::new(partition_key_expr).with_context(|| {
format!("failed to interpret the partition key: `{partition_key_expr}`")
})?;
// If valid, partition key fields should be considered as tags.
let mut tag_field_names = doc_mapping.tag_fields;
for partition_key in partition_key.field_names() {View on GitHub (pinned to a39730c5cd)
Solutions
- Set `indexed: true` on the field's mapping options.
- Remove the field from `default_search_fields`.
- Pick a different, indexed field as the default search field.
Example fix
# before
field_mappings:
- name: payload
type: bytes
stored: true
default_search_fields: [payload]
# after
default_search_fields: [message] Defensive patterns
Strategy: validation
Validate before calling
fn check_default_search_fields_indexed(cfg: &serde_yaml::Value) -> Result<(), String> {
let fields: Vec<&str> = cfg["doc_mapping"]["field_mappings"]
.as_sequence().map(|s| s.iter().collect()).unwrap_or_default();
if let Some(dsfs) = cfg["doc_mapping"]["default_search_fields"].as_sequence() {
for dsf in dsfs {
let name = dsf.as_str().unwrap_or_default();
let fm = fields.iter().find(|f| f["name"].as_str() == Some(name));
if let Some(fm) = fm {
if fm.get("indexed").and_then(|v| v.as_bool()) == Some(false) {
return Err(format!("default search field `{name}` is not indexed"));
}
}
}
}
Ok(())
} Try / catch
if let Err(e) = QuickwitDocMapper::try_from(&index_config) {
if e.to_string().contains("is not indexed") {
eprintln!("Enable indexing or drop this default_search_field: {e}");
}
return Err(e);
} Prevention
- Only list indexed fields in default_search_fields.
- When turning a field into fast-only/stored-only for aggregations, remove it from default search fields.
- Run config validation in CI before index creation.
When it happens
Trigger: `QuickwitDocMapper::try_from` where `doc_mapping.default_search_fields` names a field whose mapping has `indexed: false` (or only aggregation/fast options and no indexing).
Common situations: Adding an aggregations-only numeric field or a stored-only field to default_search_fields, or flipping `indexed: false` on a field that is still listed as a default search field.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- duplicated default search field: `{}`
- tag fields are required to be indexed. (`{}` is not configur
- `desired_num_pipelines` must be strictly positive
- `index_id` in config file {} does not match updated `index_i
- `index_uri` cannot be updated, current value {}, new expecte
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/978342d277c52f6d.
Report an issue: GitHub.