ElasticSearch排序

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
发布了79 篇原创文章 · 获赞 3 · 访问量 5256

猜你喜欢

转载自blog.csdn.net/SW_LCC/article/details/102879742