2012-01-31 13 views
9

posso passare un singolo sorta parametro alla query di ricerca nella Pyes come questo:ordinamento da più params in Pyes e elasticsearch

s = MatchAllQuery() 
conn.search(query=Search(s), indexes=["test"], sort='_score') 

ma ho bisogno di passare un parametro in più per ordinare i documenti con il stesso punteggio, come questo:

{ 
    "sort": [ 
    "_score", 
    { 
     "extra_param": { 
     "order": "asc" 
     } 
    } 
    ], 
    "query": { 
    "term": { 
     "match_all": {} 
    } 
    } 
} 

Come posso farlo in pyes?

Grazie

risposta

12

Se vuoi i risultati nel set di risultati con lo stesso punteggio per essere ordinati per prezzo, aggiungere prezzo alla stringa tipo:

s = MatchAllQuery() 
conn.search(query=Search(s), indexes=["test"], sort='_score,price') 

Per impostazione predefinita il tipo di ordinamento è ascendente. Per superare il criterio di ordinamento append : asc o : desc al parametro sorta

s = MatchAllQuery() 
conn.search(query=Search(s), indexes=["test"], sort='_score,price:desc') 
3

Se si vuole fare più dettagliato di ordinamento che ciò che è disponibile tramite sort parola chiave es.search s', si può semplicemente passare la ricerca dettato nel costruttore es.Search.

s = Search({'term': {'foo.monkey': 'george'}}, 
      sort=[{'_geo_distance': {'unit': 'mi', 
            'order': 'desc', 
            'monkey.location': '81,20'}}]) 
conn.search(s) 
Problemi correlati