{"record":{"id":"2356706fcc322a7e","repo":"elastic/elasticsearch","slug":"data-streams-not-found","errorCode":null,"errorMessage":"data streams {} not found","messagePattern":"data streams (.+?) not found","errorType":"exception","errorClass":"ResourceNotFoundException","httpStatus":404,"severity":"error","filePath":"modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/TransportDeleteDataStreamAction.java","lineNumber":151,"sourceCode":"    static ClusterState removeDataStream(\n        IndexNameExpressionResolver indexNameExpressionResolver,\n        ProjectState projectState,\n        DeleteDataStreamAction.Request request,\n        Consumer<String> systemDataStreamAccessValidator,\n        Settings settings\n    ) {\n        final ProjectMetadata project = projectState.metadata();\n        List<String> names = getDataStreamNames(indexNameExpressionResolver, project, request.getNames(), request.indicesOptions());\n        Set<String> dataStreams = new HashSet<>(names);\n        for (String dataStreamName : dataStreams) {\n            systemDataStreamAccessValidator.accept(dataStreamName);\n        }\n\n        if (dataStreams.isEmpty()) {\n            if (request.isWildcardExpressionsOriginallySpecified()) {\n                return projectState.cluster();\n            } else {\n                throw new ResourceNotFoundException(\"data streams \" + Arrays.toString(request.getNames()) + \" not found\");\n            }\n        }\n\n        return MetadataDataStreamsService.deleteDataStreams(\n            projectState,\n            dataStreams.stream().map(project.dataStreams()::get).collect(Collectors.toSet()),\n            settings\n        );\n    }\n\n    @Override\n    protected ClusterBlockException checkBlock(DeleteDataStreamAction.Request request, ClusterState state) {\n        return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);\n    }\n}\n","sourceCodeStart":133,"sourceCodeEnd":167,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/TransportDeleteDataStreamAction.java#L133-L167","documentation":"Thrown by TransportDeleteDataStreamAction when the resolved set of data streams to delete is empty AND the request did not originally contain wildcard expressions. A wildcard request that matches nothing returns silently; an explicit name request that matches nothing is treated as a user error and raises ResourceNotFoundException.","triggerScenarios":"Calling DELETE _data_stream/<name> where <name> does not match any existing data stream and is not a wildcard (no * or ,). Calling with multiple explicit names none of which exist.","commonSituations":"Typo in the data stream name; deleting an already-deleted stream; race where the stream was removed between resolve and delete; environment mismatch (wrong cluster/project).","solutions":["Verify the data stream name exists via GET _data_stream before deleting.","If partial/wildcard deletion is intended, use a wildcard expression so missing matches do not error.","Check you are targeting the correct cluster/project."],"exampleFix":"// before\nDELETE _data_stream/missing-name\n// after (verify first)\nGET _data_stream/missing-name\nDELETE _data_stream/logs-*","handlingStrategy":"validation","validationCode":"// Resolve names first; only delete if non-empty or if wildcards were used.\nconst existing = await es.indices.getDataStream({ name });\nconst names = existing.data_streams.map(d => d.name);\nif (names.length === 0 && !/[*?,]/.test(name)) {\n  throw new Error(`data streams [${name}] not found`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["GET _data_stream/<name> to confirm existence before DELETE.","Use wildcard expressions when partial matches should not error."],"tags":["data-streams","delete","not-found","elasticsearch"],"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-12T06:17:24.410Z"}