我有一个Elasticsearch映射中的日期类型字段date
(输入格式为epoch_second
)(我正在使用ES 2.1)。 我知道我可以按该字段进行排序,如下所示:
{
"sort": [
{
"myDateField" : {
"order": "desc"
}
}
]
}
但是这种排序只能精确到秒。我想按照“每周间隔”(从现在开始往回数7天为一个间隔)排序,并且在同一周内再次按照分数排序,就像这样(伪代码):
{
"sort": [
{
"myDateField" : {
"order" : "desc",
"precision" : "week"
}
},
"_score"
]
}
因此,所有在过去7天内的点击应该被等同地排名,所有超过7天但不满14天的点击应该在下一个“排序组”中,以此类推。每个“周组”应再次按得分排序。
换句话说:“最近7天(但不完全过滤掉旧的)哪些文档与当前查询最相关?”
背景:事件搜索,显然更近期的事件应该最重要。
我该如何实现这一点?