2017-09-27 2 views
0

Ich versuche, den Befehl zum Sortieren mit elasticsearch-dsl zu bilden. Aber ich habe Schwierigkeiten beim der Variable im richtigen Format in.Python elasticsearch-dsl Sortieren mit mehreren Feldern

Das Format sollte

s=Search() 
s = s.sort({"time":{"order":"asc"}}, {"anoter_field":{"order":"desc"}}) 
s.execute() 

sein Das Problem ist, ich versuche {"time":{"order":"asc"}}, {"anoter_field":{"order":"desc"}} als eine Variable zu setzen, aber ich kann nicht scheinen, dies zu erhalten in der richtigen Syntax. Ich habe versucht, dict, list und string zu verwenden, und keiner scheint zu funktionieren.

Mein Eingang wäre ein dict sein, wie

input = {"time":"asc", "another_field":"desc"} 

Antwort

1
data_input = {"time":"asc", "another_field":"desc"} 
args = [{k:{'order':v}} for k,v in data_input.items()] 
s.sort(*args) 

sieht Ich denke, ist das, was Sie fragen? Es ist schwer zu sagen ...

+0

ja .... du hast es genau richtig. Ist es das '*', das das Bestehen einer Liste in Ordnung macht? – JChao

+1

yep das heißt Liste Auspacken –

Verwandte Themen