我的查询看起来像这样(使用Elasticsearch DSL v0.0.11)
s = s.filter(
'or',
[
F('term', hide_from_search=False),
F('not', filter=F('exists', field='hide_from_search')),
]
)
我如何使用v2.x编写?当F
函数消失了吗?
以某种方式使用Q
函数?
答案 0 :(得分:1)
你可以这样做:
q = Q('bool',
should=[
Q('term', hide_from_search=False),
~Q('exists', field='hide_from_search'),
],
minimum_should_match=1
)
s = Search().query(q)
甚至更简单:
q = (Q('term', hide_from_search=False) | ~Q('exists', field='hide_from_search'))
q.minimum_should_match = 1
s = Search().query(q)