{"record":{"id":"978342d277c52f6d","repo":"quickwit-oss/quickwit","slug":"default-search-field-default-search-field-name","errorCode":null,"errorMessage":"default search field `{default_search_field_name}` is not indexed","messagePattern":"default search field `(.+?)` is not indexed","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-doc-mapper/src/doc_mapper/doc_mapper_impl.rs","lineNumber":259,"sourceCode":"        }\n        validate_fields_tokenizers(&schema, &tokenizer_manager)?;\n\n        // Resolve default search fields\n        let mut default_search_field_names = Vec::new();\n        for default_search_field_name in &builder.default_search_fields {\n            if default_search_field_names.contains(default_search_field_name) {\n                bail!(\n                    \"duplicated default search field: `{}`\",\n                    default_search_field_name\n                )\n            }\n            let (default_search_field, _json_path) = schema\n                .find_field_with_default(default_search_field_name, dynamic_field)\n                .with_context(|| {\n                    format!(\"unknown default search field `{default_search_field_name}`\")\n                })?;\n            if !schema.get_field_entry(default_search_field).is_indexed() {\n                bail!(\"default search field `{default_search_field_name}` is not indexed\",);\n            }\n            default_search_field_names.push(default_search_field_name.clone());\n        }\n\n        // Resolve tag fields\n        for tag_field_name in &doc_mapping.tag_fields {\n            validate_tag(tag_field_name, &schema)?;\n        }\n\n        let partition_key_expr: &str = doc_mapping.partition_key.as_deref().unwrap_or(\"\");\n        let partition_key = RoutingExpr::new(partition_key_expr).with_context(|| {\n            format!(\"failed to interpret the partition key: `{partition_key_expr}`\")\n        })?;\n\n        // If valid, partition key fields should be considered as tags.\n        let mut tag_field_names = doc_mapping.tag_fields;\n\n        for partition_key in partition_key.field_names() {","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-doc-mapper/src/doc_mapper/doc_mapper_impl.rs#L241-L277","documentation":"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).","triggerScenarios":"`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).","commonSituations":"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.","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."],"exampleFix":"# before\nfield_mappings:\n  - name: payload\n    type: bytes\n    stored: true\ndefault_search_fields: [payload]\n\n# after\ndefault_search_fields: [message]","handlingStrategy":"validation","validationCode":"fn check_default_search_fields_indexed(cfg: &serde_yaml::Value) -> Result<(), String> {\n    let fields: Vec<&str> = cfg[\"doc_mapping\"][\"field_mappings\"]\n        .as_sequence().map(|s| s.iter().collect()).unwrap_or_default();\n    if let Some(dsfs) = cfg[\"doc_mapping\"][\"default_search_fields\"].as_sequence() {\n        for dsf in dsfs {\n            let name = dsf.as_str().unwrap_or_default();\n            let fm = fields.iter().find(|f| f[\"name\"].as_str() == Some(name));\n            if let Some(fm) = fm {\n                if fm.get(\"indexed\").and_then(|v| v.as_bool()) == Some(false) {\n                    return Err(format!(\"default search field `{name}` is not indexed\"));\n                }\n            }\n        }\n    }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":"if let Err(e) = QuickwitDocMapper::try_from(&index_config) {\n    if e.to_string().contains(\"is not indexed\") {\n        eprintln!(\"Enable indexing or drop this default_search_field: {e}\");\n    }\n    return Err(e);\n}","preventionTips":["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."],"tags":["config","search-fields","indexing"],"backgroundTag":"invalid-config-value","analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}