ElasticSearch相关性排序
在Es进行查询的时候,查询结果会按相似程度进行排序,相关性越高则排名越靠前。
以_score字段体现相似程度大小
排序方式
默认情况下是按倒序排序
字段值排序
指定按某个指端进行排序,例如按照时间排序
GET /_search
{
"query": {
"filtered": {
"filter": {
"term": {
"user_id": 1
}
}
}
},
"sort": {
"date": {
"order": "desc"
}
}
}
查询后会在结果中增加一个sort字段,其值用于排序。
如下:
"hits" : {
"total" : 6,
"max_score" : null,
"hits" : [ {
"_index" : "us",
"_type" : "tweet",
"_id" : "14",
"_score" : null,
"_source" : {
"date": "2014-09-24",
...
},
"sort" : [ 1411516800000 ]
},
...
}
多重排序
如果想使用多个字段进行多重排序,可以在sort里面多加字段。
GET /_search
{
"query": {
"filtered": {
"filter": {
"term": {
"user_id": 2
}
},
"query": {
"match": {
"tweet": "manage text search"
}
}
}
},
"sort": [
{
"date": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}
]
}
字符串参数排序
没有使用结构体查询的时候也可以指定排序
GET /_search?sort=date:desc&sort=_score&q=search