2012-01-31 7 views
9

puedo pasar un solo parámetro de clasificación a la consulta de búsqueda en pYES así:Clasificación por múltiples params en pYES y Elasticsearch

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

pero tengo que pasar un parámetro adicional para ordenar los documentos con el misma puntuación, así:

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

¿Cómo puedo hacer esto en pYES?

Gracias

Respuesta

12

Si desea los resultados en el conjunto de resultados con la misma puntuación a ser ordenados por precio, precio añadir a la cadena para ordenar:

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

Por defecto, el orden de clasificación es ascendiendo Para pasar el criterio de ordenación anexar : asc o : desc al parámetro de tipo

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

Si usted quiere hacer más detallado de clasificación que lo que está disponible a través de sort palabra clave es.search 's, que sólo puede pasar a la búsqueda dict en el constructor es.Search.

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