升级 Elasticsearch DSL
Upgrading Elasticsearch DSL
我有一个类似这样的查询(使用 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
功能?
你可以这样做:
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)
我有一个类似这样的查询(使用 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
功能?
你可以这样做:
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)