2012-01-31 10 views
9

mogę przekazać jeden rodzaj parametr do wyszukiwanego hasła w pYES tak:Sortowanie według wielu params w pYES i elasticsearch

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

Ale muszę zdać dodatkowy parametr aby posortować dokumenty Europejska ten sam wynik, taki jak ten:

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

Jak mogę to zrobić w pyes?

Dzięki

Odpowiedz

12

Jeśli chcesz wyniki w wyniku zestaw z takim samym wynikiem mają być sortowane według ceny, dołącz cenę na ciąg sortowania:

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

Domyślnie porządek jest rosnąco. Aby przekazać porządek dołączania : ASC lub : desc z parametrem sortowania

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

Jeśli chcesz zrobić bardziej szczegółowe sortowania, że ​​to co jest dostępne poprzez es.search „s sort słów kluczowych, można po prostu przejść wyszukiwanie dyktować do konstruktora es.Search.

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