Elasticsearch:按计算的日期值排序

时间:2016-10-13 07:07:31

标签: sorting datetime elasticsearch

是否可以将日期字段与current time进行比较,然后根据该比较的结果进行排序(类似于SQL顺序中的切换案例)?

目标是制作具有特定日期时间字段且其值大于当前时间的文档,移至列表顶部但具有特定日期时间字段小于当前时间的所有文档在优先级方面相同且不应该按此日期时间字段排序。

1 个答案:

答案 0 :(得分:1)

首先,您可以使用microtime轻松使用。 Elasticsearch中有script sort个功能。您还可以在此脚本中使用if语句。

{
    "query" : {
        ....
    },
    "sort" : {
        "_script" : {
            "type" : "number",
            "script" : {
                "inline": "if (doc['time'].value > current_time) return doc['field_name'].value; else return current_time",
                "params" : {
                    "current_time" : 1476354035
                }
            },
            "order" : "asc"
        }
    }
}

使用脚本运行查询时,应发送当前时间。