{"record":{"id":"1a5c4d31e8f48e1c","repo":"quickwit-oss/quickwit","slug":"field-name-is-too-long-field-names-must-not","errorCode":null,"errorMessage":"field name `{}` is too long. field names must not be longer than 255 characters","messagePattern":"field name `(.+?)` is too long\\. field names must not be longer than 255 characters","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-doc-mapper/src/doc_mapper/field_mapping_entry.rs","lineNumber":897,"sourceCode":"            \"field name `{field_mapping_name}` is reserved. the following fields are reserved for \\\n             Quickwit internal usage: {}\",\n            QW_RESERVED_FIELD_NAMES.join(\", \"),\n        );\n    }\n    if FIELD_MAPPING_NAME_PTN.is_match(field_mapping_name) {\n        return Ok(());\n    }\n    if field_mapping_name.is_empty() {\n        bail!(\"field name is empty\");\n    }\n    if field_mapping_name.starts_with('.') {\n        bail!(\n            \"field name `{}` must not start with a dot `.`\",\n            field_mapping_name\n        );\n    }\n    if field_mapping_name.len() > 255 {\n        bail!(\n            \"field name `{}` is too long. field names must not be longer than 255 characters\",\n            field_mapping_name\n        )\n    }\n    let first_char = field_mapping_name.chars().next().unwrap();\n    if !first_char.is_ascii_alphabetic() {\n        bail!(\n            \"field name `{}` is invalid. field names must start with an uppercase or lowercase \\\n             ASCII letter, or an underscore `_`\",\n            field_mapping_name\n        )\n    }\n    bail!(\n        \"field name `{}` contains illegal characters. field names must only contain uppercase and \\\n         lowercase ASCII letters, digits, hyphens `-`, periods `.`, and underscores `_`\",\n        field_mapping_name\n    );\n}","sourceCodeStart":879,"sourceCodeEnd":915,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-doc-mapper/src/doc_mapper/field_mapping_entry.rs#L879-L915","documentation":"Doc-mapper field name validation found a mapping entry whose field name exceeds 255 characters. Long names are rejected because they bloat tantivy field metadata and can hit internal limits; the guard runs after the reserved-name and pattern checks in field_mapping_entry.rs.","triggerScenarios":"Creating a FieldMappingEntry whose name exceeds 255 bytes, e.g. programmatically joining many nested path segments into a single flat name, or generating fields with long UUID-composed identifiers.","commonSituations":"Auto-generated mappings from log pipelines concatenating many path segments; storing raw JSON keys as flat field names; migrations from systems without a name length limit.","solutions":["Shorten the field name to at most 255 characters/bytes.","Use nested object fields instead of one long dotted flat name.","Hash or abbreviate auto-generated long identifiers in the mapping generator."],"exampleFix":"// before\n{\"a_very_long_name_\".repeat(30): {\"type\": \"text\"}}\n// after\n{\"short_name\": {\"type\": \"text\"}}","handlingStrategy":"validation","validationCode":"fn validate_field_name(name: &str) -> Result<(), String> {\n    if name.len() > 255 {\n        return Err(format!(\"field name is too long ({} bytes > 255)\", name.len()));\n    }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Cap auto-generated field name length in pipeline code.","Prefer nested fields over long dotted flat names.","Add a length assertion in mapping-generation tests."],"tags":["validation","index-config","naming"],"backgroundTag":"value-out-of-range","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"}