我在elasticsearch中有以下文件。 value
是一个整数,date
是一个日期时间对象:
{
"_id": 1,
"source": {
"date": "2018-05-01 18:00:00"
"value": 10,
}
},
{
"_id": 2,
"source": {
"date": "2018-07-03 13:00:00"
"value": 500,
}
},
{
"_id": 3,
"source": {
"date": "2018-10-05 20:00:00"
"value": 80,
}
},
如果我想获得按日期排序的最高值的前2名,预期输出为:
{
"_id": 2,
"source": {
"date": "2018-07-03 13:00:00"
"value": 500,
}
},
{
"_id": 3,
"source": {
"date": "2018-10-05 20:00:00"
"value": 80,
}
},
我已经能够自己排序任何一个,但他们不能一起工作。这是我的排序查询:
"sort": [
{"value": {"order": "desc"}},
{"date": {"order": "asc"}}
]
上述查询将按值按降序对文档进行排序,但会忽略按时间顺序排序。甚至可以在elasticsearch 2.x中进行那种双重排序吗?
答案 0 :(得分:0)
2.x中可以进行多级排序,您正在正确地进行。我猜你可能期待不同的行为?
在official guide中,有一个关于它是如何工作的很好的解释:
订单很重要。结果首先按照第一个标准排序。 只有第一个排序值相同的结果才会被排序 按第二个标准,等等。