Elasticsearch按字段排序,如果为null,则使用另一个字段

时间:2016-04-13 11:10:47

标签: sorting elasticsearch

我的Post模型具有lastRepliedTimecreatedTime属性。如何按Post对此lastRepliedTime进行排序,但当其值为null时,我使用createdTime作为排序值?

例如,我有这些数据:

ID  createdTime          lastRepliedTime
1   2015-05-27 13:48:10  2015-06-04 16:34:43
2   2015-06-09 05:23:38  2015-06-24 00:30:06
3   2015-06-09 17:34:56  NULL

如果按升序排序,我希望排序结果如下:

ID  createdTime          lastRepliedTime
1   2015-05-27 13:48:10  2015-06-04 16:34:43
3   2015-06-09 17:34:56  NULL
2   2015-06-09 05:23:38  2015-06-24 00:30:06

我在here中找到了使用MySQL的解决方案。但有没有办法使用Elasticsearch对其进行排序?

1 个答案:

答案 0 :(得分:1)

你试试吗?

{
    "sort": [
        { "lastRepliedTime": { "order": "asc" }},
        { "createdTime": { "order": "asc" }}
    ],
    "query" : {
       "match_all" : { }
    }
}