基于开放搜索中的1个key进行聚合排序

问题描述 投票:0回答:1

考虑下面是聚合后得到的2个文档,现在我需要对文档进行排序。

文件1:

{
'startDate' :'2023-02-01',
'endDate' : '2022-02-01'
}

文档 2 :

{
'endDate' : '2024-02-01'
}

现在我应该收到第二份文档作为排序后的结果。

下面是我正在使用的查询

{
    "groupBy-top-hits": {
        "top_hits": {
            "sort": [
                {
                    "startDate": {
                        "order": "desc"
                    }
                },
                {
                    "endDate": {
                        "order": "desc"
                    }
                }
            ],
            "size": 1
        }
    }
}

但它返回第一个文档。查询应该是如果存在任何一个键,则使用该键进行排序,但它不是这样工作的。如果有任何查询需要更改,请提出建议。

elasticsearch elasticsearch-5 elasticsearch-aggregation
1个回答
0
投票

当排序表达式包含多个字段时,主要按照第一个字段进行排序。仅当第一个字段中存在相同的值(在您的情况下,

startDate
)时才会考虑第二个字段。默认情况下,缺失值排在最后。因此,由于第一个文档的
startDate
高于第二个文档的
startDate
(第二个文档不存在,因此排在最后),因此第一个文档出现在结果中。

© www.soinside.com 2019 - 2024. All rights reserved.