【问题标题】:How to add an OR filter around a nested query with elasticsearch-dsl如何使用 elasticsearch-dsl 在嵌套查询周围添加 OR 过滤器
【发布时间】:2026-01-01 06:40:01
【问题描述】:

我有一个如下所示的嵌套过滤器:

search = search.filter(
                'nested', 
                path=path, 
                filter=F('bool', must=queries),
                inner_hits={'sort': ['p', 'd']}
            )

我想在整个事情周围添加一个 OR 过滤器。所以它要么匹配 X 要么匹配这个嵌套查询。

我使用的是 ES 1.7

【问题讨论】:

  • 这个 F 来自哪里?
  • 我无法从 django elasticsearch-dsl 导入这个 F
  • @SaadMirza 你可能已经明白了。对于其他有相同问题的人,F 似乎已在版本 2.0.0 中删除。 changelog 表示改用 Q
  • @user650881 你是对的

标签: python elasticsearch elasticsearch-dsl


【解决方案1】:

多一点毅力让我得到了这个:

search = search.filter(
                'or',
                [F(
                    'nested',
                    path=path,
                    filter=F('bool', must=queries),
                    inner_hits={'sort': ['p', 'd']}
                ), F('bool', must=or_queries)]
            )

这似乎可以解决问题..

【讨论】: