Troubleshooting Searchable Storage Write Failures
How to read and resolve the common errors that appear when documents fail to write to Searchable Storage.
When documents fail to write to your Searchable Storage, they appear in the Failed Items Viewer on the Searchable Storage component. This page explains the most common write errors, what causes them, and how to resolve them.
Why did my document fail with "tried to parse field ... as object, but found a concrete value"?
The full error looks like this:
400/object mapping for [enrichment.sentiment] tried to parse field [sentiment] as object, but found a concrete value
What it means: Your Searchable Storage builds its field mapping dynamically from the first document it sees. If an early document sent enrichment.sentiment as an object (a nested structure), the field is locked as an object. When a later document sends the same field as a plain value (a string or number), the write is rejected because the two shapes can't share one mapping.
How to resolve it:
- Identify the upstream component that writes the field (for example, a Sentiment Classifier or a Custom Function) and make it output a consistent shape for every document.
- If both shapes are intentional, normalize them before Searchable Storage using a JSON Schema Transformer so the field is always the same type.
- If you need to change the locked type, create a new Searchable Storage block. An existing field's type cannot be changed in place once documents have been indexed.
Why did my document fail with "if _id is specified it must not be empty"?
The full error looks like this:
400/if _id is specified it must not be empty
What it means: A document arrived with an _id field that is present but blank. Searchable Storage will generate an ID for you if the field is absent, but it rejects an _id that is explicitly set to an empty value.
How to resolve it:
- Trace the upstream component (often a Router or a transform) that is setting
_id, and have it omit the field when no value is available rather than sending an empty string. - If you want Searchable Storage to assign IDs automatically, make sure no upstream component writes
_idat all.
How do I stop these errors from recurring?
- Deploy a Document Inspector just before Searchable Storage to confirm the shape of fields like
_idand any enrichment fields. - Keep enrichment output shapes consistent across all routes that feed the same storage block.
- After fixing the upstream cause, use Retry in the Failed Items Viewer to re-process the held documents.
Updated about 20 hours ago
