1

我有一个看起来像这样的查询(使用 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功能?

4

1 回答 1

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)
于 2017-01-06T05:41:49.127 回答