Laura Geller: Unreachable Documents (2026-05-20)
Summary
46 products (234 documents) were stored in the Marqo index but invisible to all search methods (LEXICAL, TENSOR, collection, filter). get-documents returned _found: true for all of them.
Root Cause
Merchandising filter in KV store. The index's page and search triggers both contained:
filter_string: "productMetafieldSeoHidden:0 AND NOT productStatus:(unlisted)"
44 of the 46 unreachable products had productMetafieldSeoHidden: 1 set as a Shopify metafield. The merchandising layer injected this filter into every search request via the search proxy, making these documents invisible.
The remaining 2 unreachable products were also excluded by other merchandising conditions.
Reuse
This script and diagnostic pattern is useful when:
- Products exist in the Marqo document store (
get-documentsreturns them) but don't appear in search results - A bulk sync reports success but products are still missing from the storefront
- You need to distinguish between an indexing failure (doc not in store) vs a search/merchandising issue (doc in store but filtered out)
Diagnostic steps
- Verify documents exist via
get-documentsendpoint with specific doc IDs - Search multiple ways —
_idfilter,parentProductIdfilter, collection name, text query — to rule out a specific search path issue - Compare fields between a reachable and unreachable document — look for fields that differ consistently (like
productMetafieldSeoHidden) - Check merchandising KV for filter_string rules that may exclude the documents. The KV keys follow the pattern
{index_id}|pageand{index_id}|search
Files
lg-unreachable-docs.sh— Reproducer script demonstrating the issue with control comparisons