多个字段的 ElasticSearch 排序顺序

ElasticSearch sort order for multiple fields

为多个字段指定 sort order in ElasticSearch 的最佳方法是什么?查询字符串格式似乎根本不起作用:

http://elasticsearch_url/index/_search?sort=field1:asc&sort=field2:desc&size=100

有人想先按字段 1 排序,然后按字段 2 排序,但似乎只有一个字段排序正确。完整的符号效果更好,但第一个条目有时会出现错误的搜索顺序:

curl -s -XGET http://elasticsearch_url/index/_search -d '
{
    "sort": [
        { "field1": { "order": "desc" }},
        { "field2": { "order": "desc" }}
    ],
    "size": 100
}'

显然第二种,完整的表示法效果更好。

还有一个问题是其中一个字段包含 url,ElasticSearch 以奇怪的方式对其进行了解析。连普通的string fields can be difficult to sort, indexing a url in ElasticSearch都更难

sort关键字接受一个可以定位多个字段的数组。

curl -s -XGET http://elasticsearch_url/index/_search -d '
{
    "sort": [
        { "field1": { "order": "desc" }},
        { "field2": { "order": "desc" }}
    ],
    "size": 100
}'