What is this?
Admin note: This guide explains how to perform deeper, more complex searches that connect different types of data—for example, finding products based on their variants or categories, or searching through categories and their sub-categories.
Who is this for? Administrators should read this when simple searches aren’t enough. It’s useful for “advanced” users who want to create deep business rules. Developers will also use these techniques to build sophisticated integrations.
Key benefits for the e-shop:
- Cross-Data Searching: Find products by their variants, categories or other related records.
- Hierarchical Search: Easily find all products in a main category and all its sub-categories with a single rule.
- Translation Management: Identify products that are missing descriptions in specific languages like German or French.
- System Integration: Use “External IDs” to find data using the same codes your other systems (like accounting) use.
Advanced Filtering
Advanced filtering allows you to reach across entity boundaries and perform deep analysis on your hierarchical data and relationships.
[navigate:where-basics.md|Basic Filters|filter] [navigate:where-functions.md|Functions & Aggregation|zap]
Relation Filtering
Relations let you filter entities based on the values of their related records.
Relation Types: ONE vs MANY
- ONE Relation: A single reference (e.g., product to brand). SQL uses a join.
- MANY Relation: A collection of records (e.g., product to variants). SQL uses an
EXISTSsubcondition.
Filter by Related Entity
supplier.name = "Acme"
[badge:Relations|secondary|right]
Deep Relation Traversal
You can traverse multiple relations deep using dot notation.
product.supplier.name = "Acme"
[badge:Relations|secondary|right]
Relation with Brackets
Use brackets to apply multiple conditions to the same related entity.
variants[priceWithVat > 1000 and weight > 5]
[badge:Relations|secondary|right]
Double Bracket Relations
Chain bracket conditions for precise deep filtering.
variants[name like "MacBook"].supplier[name = "Acme"]
[badge:Relations|secondary|right]
Hierarchical Subtree Filtering
The in subtree operator matches records within a hierarchical parent-child structure, like a category tree. It is available only in setups that include product categories.
Subtree Filtering (Recursive)
Includes the root and all its descendants.
in subtree "code:ELECTRONICS"
[badge:Hierarchical|secondary|right]
Nonrecursive Subtree
Matches only the direct children of the root.
in subtree "code:ELECTRONICS" nonrecursive
[badge:Hierarchical|secondary|right]
Subtree in Relation
Filter products that have a variant in a specific category branch.
variants[in subtree "code:FASHION"]
[badge:Hierarchical|secondary|right]
Lookups and External IDs
Reference entities by unique codes or identifiers from external systems (like ABRA Flexi/FlexiBee).
Standard Lookups
Use code:, ean:, or guid: prefixes.
supplier = "code:ACME"
Equivalent to supplier.code = "ACME".
External ID Lookups
Reference entities by their ID in another system.
supplier = "ext:SYSTEM:SUPPLIER:123"
Everything after ext: is treated as the external identifier.
Translatable Fields
Query multilingual content in specific languages using the fieldName:langCode syntax.
Language-Specific Filter
Supported codes: cs, en, de, fr, hu, pl, sk.
name:cs = "Ahoj" and name:en = "Hello" and description:de like "Produkt"
[badge:Translatable|secondary|right]
Missing Translation Checks
Find entities where translations are missing.
missing "en" translation or missing any translation
[badge:Translation|secondary|right]