{"record":{"id":"3b1527624c07161a","repo":"elastic/elasticsearch","slug":"field-is-null-cannot-process-it-3b1527","errorCode":null,"errorMessage":"field [{}] is null, cannot process it.","messagePattern":"field \\[(.+?)\\] is null, cannot process it\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DissectProcessor.java","lineNumber":46,"sourceCode":"    final String appendSeparator;\n    final DissectParser dissectParser;\n\n    DissectProcessor(String tag, String description, String field, String pattern, String appendSeparator, boolean ignoreMissing) {\n        super(tag, description);\n        this.field = field;\n        this.ignoreMissing = ignoreMissing;\n        this.pattern = pattern;\n        this.appendSeparator = appendSeparator;\n        this.dissectParser = new DissectParser(pattern, appendSeparator);\n    }\n\n    @Override\n    public IngestDocument execute(IngestDocument ingestDocument) {\n        String input = ingestDocument.getFieldValue(field, String.class, ignoreMissing);\n        if (input == null && ignoreMissing) {\n            return ingestDocument;\n        } else if (input == null) {\n            throw new IllegalArgumentException(\"field [\" + field + \"] is null, cannot process it.\");\n        }\n        dissectParser.forceParse(input).forEach(ingestDocument::setFieldValue);\n        return ingestDocument;\n    }\n\n    @Override\n    public String getType() {\n        return TYPE;\n    }\n\n    public static final class Factory implements Processor.Factory {\n\n        @Override\n        public DissectProcessor create(\n            Map<String, Processor.Factory> registry,\n            String processorTag,\n            String description,\n            Map<String, Object> config,","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DissectProcessor.java#L28-L64","documentation":"Thrown by DissectProcessor.execute when the configured source field is null or absent and 'ignore_missing' is false (default). Same null-handling pattern as Convert/Csv processors: getFieldValue with ignoreMissing, and a null result without ignore_missing is fatal. The dissect pattern (key/value extraction) cannot run on null input.","triggerScenarios":"A dissect processor whose 'field' is null or missing in the document, with ignore_missing omitted or false. The dissect pattern is never applied.","commonSituations":"Optional log fields; field renamed upstream; pipelines shared across heterogeneous log streams where only some have the dissected field; producers that emit null for empty values.","solutions":["Set 'ignore_missing: true' on the dissect processor.","Confirm the 'field' name matches what prior processors or the source produce.","Set a default with a 'set' processor before dissect if absence should produce a default parsed shape."],"exampleFix":"// before\n{\"dissect\": {\"field\": \"message\", \"patterns\": [\"%{ts} %{level} %{} %{msg}\"]}}\n// after\n{\"dissect\": {\"field\": \"message\", \"patterns\": [\"%{ts} %{level} %{} %{msg}\"], \"ignore_missing\": true}}","handlingStrategy":"validation","validationCode":"// Default ignore_missing on dissect for optional fields.\n{\"dissect\": {\"field\": \"message\", \"patterns\": [\"%{ts} %{msg}\"], \"ignore_missing\": true}}","typeGuard":null,"tryCatchPattern":"{\"on_failure\": [{\"index\": {\"index\": \"ingest-dlq\"}}]}","preventionTips":["Default to ignore_missing: true for optional log fields.","Confirm field names after upstream renames.","Use a set processor to default missing values when the dissect output is required downstream."],"tags":["ingest","dissect-processor","null-handling","config"],"backgroundTag":null,"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}