2012-01-31 27 views
9

tôi có thể vượt qua một đơn loại tham số truy vấn tìm kiếm trong pyes như thế này:Phân loại theo nhiều params trong pyes và elasticsearch

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

Nhưng tôi cần phải vượt qua một tham số phụ để sắp xếp các tài liệu với cùng số điểm, như sau:

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

Tôi có thể làm điều này bằng pyes như thế nào?

Cảm ơn

Trả lời

12

Nếu bạn muốn các kết quả trong tập hợp kết quả với tỷ số tương tự để được sắp xếp theo giá, thêm giá vào chuỗi sắp xếp:

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

Theo mặc định thứ tự sắp xếp là tăng dần. Để vượt qua thứ tự sắp xếp thêm : asc hoặc : desc tới tham số loại

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

Nếu bạn muốn làm chi tiết hơn sắp xếp rằng những gì có sẵn thông qua sort từ khóa es.search 's, bạn chỉ có thể vượt qua các tìm kiếm dict vào constructor es.Search.

s = Search({'term': {'foo.monkey': 'george'}}, 
      sort=[{'_geo_distance': {'unit': 'mi', 
            'order': 'desc', 
            'monkey.location': '81,20'}}]) 
conn.search(s) 
Các vấn đề liên quan