Can this metadata filtering and recall be used in a nested manner? For example, the most basic one: Can it be nested? #20251

Closed
opened 2026-02-21 20:06:28 -05:00 by yindo · 2 comments
Owner

Originally created by @KrisHe666 on GitHub (Nov 10, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.9.2

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

Can this metadata filtering and recall be used in a nested manner? For example, the most basic one:
Can it be nested?
{
"logical_operator": "and",
"conditions": [
{
"name": "xx",
"comparison_operator": "is",
"value": "xx"
},
{
"logical_operator": "or",
"conditions": [
{
"logical_operator": "and",
"conditions": [
{
"name": "xx",
"comparison_operator": "is",
"value": "xx"
},
{
"name": "xx",
"comparison_operator": "contains",
"value": "2023"
}
]
},
{
"logical_operator": "and",
"conditions": [
{
"name": "xx",
"comparison_operator": "is",
"value": "xx"
},
{
"name": "xx",
"comparison_operator": "contains",
"value": "2020"
}
]
}
]
}
]
}

✔️ Expected Behavior

12

Actual Behavior

No response

Originally created by @KrisHe666 on GitHub (Nov 10, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.9.2 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce Can this metadata filtering and recall be used in a nested manner? For example, the most basic one: Can it be nested? { "logical_operator": "and", "conditions": [ { "name": "xx", "comparison_operator": "is", "value": "xx" }, { "logical_operator": "or", "conditions": [ { "logical_operator": "and", "conditions": [ { "name": "xx", "comparison_operator": "is", "value": "xx" }, { "name": "xx", "comparison_operator": "contains", "value": "2023" } ] }, { "logical_operator": "and", "conditions": [ { "name": "xx", "comparison_operator": "is", "value": "xx" }, { "name": "xx", "comparison_operator": "contains", "value": "2020" } ] } ] } ] } ### ✔️ Expected Behavior 12 ### ❌ Actual Behavior _No response_
yindo added the 🌚 invalid label 2026-02-21 20:06:28 -05:00
yindo closed this issue 2026-02-21 20:06:28 -05:00
Author
Owner

@crazywoola commented on GitHub (Nov 10, 2025):

This is only for bug report, if you would like to ask a question, please head to Discussions.

@crazywoola commented on GitHub (Nov 10, 2025): This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general).
Author
Owner

@dosubot[bot] commented on GitHub (Nov 10, 2025):

Nested metadata filtering (using nested "and"/"or" logical operators as in your example) is not supported in Dify v1.9.2. The filtering logic only allows a single logical_operator at the top level, applied to a flat list of conditions. There is no recursive or tree-based parsing for nested logical groups—so complex, deeply nested filter structures will not work as expected. This limitation is present both in the data model and in the query-building logic for retrieval and recall. You can see this in the code where only a flat list of conditions is processed and combined with a single "and" or "or" operator at the top level, with no support for nested groups or operators within conditions themselves [source 1].

If you need more complex filtering, you’ll need to flatten your logic or handle advanced filtering outside of Dify for now.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

@dosubot[bot] commented on GitHub (Nov 10, 2025): <!-- Answer --> Nested metadata filtering (using nested "and"/"or" logical operators as in your example) is not supported in Dify v1.9.2. The filtering logic only allows a single logical_operator at the top level, applied to a flat list of conditions. There is no recursive or tree-based parsing for nested logical groups—so complex, deeply nested filter structures will not work as expected. This limitation is present both in the data model and in the query-building logic for retrieval and recall. You can see this in the code where only a flat list of conditions is processed and combined with a single "and" or "or" operator at the top level, with no support for nested groups or operators within conditions themselves [[source 1]](https://github.com/langgenius/dify/blob/9dcb780fcba5c6cca3bdcb2912a999471fb92827/api/core/rag/retrieval/dataset_retrieval.py#L862-L1080). If you need more complex filtering, you’ll need to flatten your logic or handle advanced filtering outside of Dify for now. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/5c74132c-62c6-4792-889a-f22896092321?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/28072)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#20251