2017-01-05 3 views
1

Ich habe eine Abfrage, die wie diese (mit Elasticsearch DSL v0.0.11)Upgrade Elasticsearch DSL

s = s.filter(
     'or', 
     [ 
      F('term', hide_from_search=False), 
      F('not', filter=F('exists', field='hide_from_search')), 
     ] 
    ) 

sieht Wie würde ich schreiben, dass v2.x mit? Wann ist die F Funktion verschwunden?

Mit der Q Funktion irgendwie?

Antwort

1

Sie können es wie folgt tun:

q = Q('bool', 
     should=[ 
     Q('term', hide_from_search=False), 
     ~Q('exists', field='hide_from_search'), 
     ], 
     minimum_should_match=1 
) 
s = Search().query(q) 

Oder noch einfacher wie folgt aus:

q = (Q('term', hide_from_search=False) | ~Q('exists', field='hide_from_search')) 
q.minimum_should_match = 1 
s = Search().query(q) 
Verwandte Themen